在Python pandas中有选择地将float转换为整数和小数

时间:2017-08-27 08:19:17

标签: python pandas dataframe types type-conversion

我正在从多个csv读取数据,应用一些过滤器并将它们合并到数据帧中。 csv中的原始数据仅为数字/分数。熊猫正在将它们变成浮动。多数民众赞成,但我只需要一列保持不变。要将其转换回整数,我尝试了:

df['PRICE']=df['PRICE'].astype(int)

这适用于整数。但是,这也将所有小数转换为整数。意思,甚至

1162.50 --> 1162

我希望将其更改为:

1152.0  --> 1152
1216.50 --> 1216.5
1226.65 --> 1226.65

提前致谢

1 个答案:

答案 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