【发布时间】:2020-09-29 13:26:39
【问题描述】:
我有一个使用从 excel 导入的数据创建的数据框 df1,如下所示,我希望将列从“未命名 26”四舍五入到“未命名 34”到小数点后 3 位。
输入:df1
Curve 7 Unnamed: 26 Unnamed: 27 Unnamed: 30 Unnamed: 31 Unnamed: 34
126 2424.53 -0.000416507 0.000547765 0.00123807 0.000496849 0.000611638
127 2414.78 -0.000524779 0.000573377 0.00144546 0.000465293 0.000653559
128 2400.96 -0.000522968 0.000775356 0.00192514 0.000654915 0.000874891
129 2385.15 -0.000660529 0.000800742 0.00254473 0.000915885 0.00121266
130 2369.16 -0.000633806 0.000877753 0.00292714 0.00121839 0.00156733
.. ... ... ... ... ... ...
230 863.956 0.00732472 -0.000931889 0.0248365 0.000417123 0.0198425
231 849.027 0.00743242 -0.000944736 0.0255833 0.000450288 0.0204515
232 833.801 0.00761184 -0.000993092 0.0265546 0.000394343 0.0211056
233 818.99 0.00778416 -0.000939103 0.0275128 0.000466737 0.0216808
234 804.799 0.00780258 -0.000769448 0.0278843 0.000755645 0.0217333
df1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 109 entries, 126 to 234
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Curve 7 109 non-null object
1 Unnamed: 26 109 non-null object
2 Unnamed: 27 109 non-null object
3 Unnamed: 30 109 non-null object
4 Unnamed: 31 109 non-null object
5 Unnamed: 34 109 non-null object
6 Unnamed: 35 109 non-null object
dtypes: object(7)
memory usage: 6.1+ KB
尝试 1:
df2=df1.round(3)
输出: df2 与 df1 相同。
Attempt2:专门调用要向下舍入的列
list=['Unnamed: 26','Unnamed: 27','Unnamed: 30','Unnamed: 31','Unnamed: 34','Unnamed: 35']
df2=pd.DataFrame(df1,columns=list)
输出: df2 与 df1 相同。
不确定还可以尝试什么...?
【问题讨论】:
-
我在我的环境中运行了您的代码。它被正确地四舍五入到三位数。用
df.info()检查数据类型。 -
我已经更新了我原来的帖子。此信息表明数据框具有非空条目,因此应该可以工作吗?我也会看看@Clinton Sorrel 的帖子
-
由于数据类型必须是'float',所以要转换成
df.astype(float)。 -
这正是问题所在。非常感谢您的帮助。