【发布时间】:2021-01-10 21:03:04
【问题描述】:
我尝试使用 round 然后 astype 将浮点 DataFrame 的某些列中的值转换为整数。但是,这些值仍然包含小数位。我的代码有什么问题?
nums = np.arange(1, 11)
arr = np.array(nums)
arr = arr.reshape((2, 5))
df = pd.DataFrame(arr)
df += 0.1
df
原始df:
0 1 2 3 4
0 1.1 2.1 3.1 4.1 5.1
1 6.1 7.1 8.1 9.1 10.1
然后四舍五入到 int 代码:
df.iloc[:, 2:] = df.iloc[:, 2:].round()
df.iloc[:, 2:] = df.iloc[:, 2:].astype(int)
df
输出:
0 1 2 3 4
0 1.1 2.1 3.0 4.0 5.0
1 6.1 7.1 8.0 9.0 10.0
预期输出:
0 1 2 3 4
0 1.1 2.1 3 4 5
1 6.1 7.1 8 9 10
【问题讨论】:
-
熊猫似乎很谨慎。设置值时它不会向下转换列(因为 float 可以保持 int 保持浮动)但它会在必要时向上转换类型(即,如果您尝试将其设置为字符串值,则会更改为对象)