python – 将float Series中的所有元素转换为整数
发布时间:2020-12-20 12:09:25 所属栏目:Python 来源:网络整理
导读:我在数据框中有一个具有浮点值的列(所以我将此列称为Float系列).我想将所有值转换为整数或只是将其四舍五入,以便没有小数. 我们说数据帧是df,列是a,我试过这个: df['a'] = round(df['a']) 我得到一个错误,说这个方法不能应用于系列,只适用于单个值. 接下来
我在数据框中有一个具有浮点值的列(所以我将此列称为Float系列).我想将所有值转换为整数或只是将其四舍五入,以便没有小数.
我们说数据帧是df,列是a,我试过这个: df['a'] = round(df['a']) 我得到一个错误,说这个方法不能应用于系列,只适用于单个值. 接下来我尝试了这个: for obj in df['a']: obj =int(round(obj)) 在此之后我打印了df,但没有变化. 解决方法
round将无法工作,因为它是在类似于数组而不是标量值的pandas系列上调用的,有内置方法
pd.Series.round 在整个Series数组上运行,之后您可以使用
astype 更改dtype:
In [43]: df = pd.DataFrame({'a':np.random.randn(5)}) df['a'] = df['a'] * 100 df Out[43]: a 0 -4.489462 1 -133.556951 2 -136.397189 3 -106.993288 4 -89.820355 In [45]: df['a'] = df['a'].round(0).astype(int) df Out[45]: a 0 -4 1 -134 2 -136 3 -107 4 -90 当有可用的矢量化方法时,也不必迭代行 这个: for obj in df['a']: obj =int(round(obj)) 不会改变系列中的单个单元格,它会在值的副本上运行,这就是df未发生变异的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |