我正在从多个csv读取数据,应用一些过滤器并将它们合并到数据帧中。 csv中的原始数据仅为数字/分数。熊猫正在将它们变成浮动。多数民众赞成,但我只需要一列保持不变。要将其转换回整数,我尝试了:
df['PRICE']=df['PRICE'].astype(int)
这适用于整数。但是,这也将所有小数转换为整数。意思,甚至
1162.50 --> 1162
我希望将其更改为:
1152.0 --> 1152
1216.50 --> 1216.5
1226.65 --> 1226.65
提前致谢
答案 0 :(得分:4)
您可以使用带有pd.DataFrame
的{{1}}构造函数重新初始化数据框:
dtype=object
或者,如果它只是您要转换的一列,则可以使用print(df)
Col1
0 1152.00
1 1216.50
2 1226.65
df = pd.DataFrame(df, dtype=object)
print(df)
Col1
0 1152
1 1216.5
2 1226.65
构造函数的方式相同:
pd.Series
法定警告:在数据框中使用混合类型会破坏pandas / numpy为纯数字类型提供的所有优化和加速优势。
上面的方法概述了保留数字属性的方法,但是如果要保存为CSV,则必须转换为字符串并截断,否则在保存时它们将被强制转换为浮点数。这就是你如何做到的:
df.Col1 = pd.Series(df.Col1, dtype=object)
print(df)
Col1
0 1152
1 1216.5
2 1226.65