pandas to_csv:如何使用混合类型格式化浮点数

时间:2016-05-19 08:41:57

标签: csv pandas

我有一个df,其中包含一个包含float和text值的列。

df.some_column

0    48.5182
1    58.2259
2    some string
3    48.5182
4    17.4928

我想将所有值写入CSV,浮点数舍入为0位小数。因此,此列中的值为:

48
58
some string
48
17

当我用

将其写入CSV时

df.to_csv(output_path,encoding='utf-8', index=False, float_format='%.0f')

float_format被忽略,我得到十进制值。如果我先删除带有字符串的行,则会按预期使用float_format。我四处寻找将值转换为int的方法,但是没有找到在列上执行此操作的方法。

看起来我可能会遍历所有值并围绕它们,但我怀疑还有一些更优雅的方式。

1 个答案:

答案 0 :(得分:0)

您可以将dtype转换为str,然后在小数点上拆分并取整数部分:

In [70]:    
df['some_col'] = df['some_col'].astype(str)
df['some_col'] = df['some_col'].loc[df['some_col'].str.contains('.')].str.split('.').str[0]
df

Out[70]:
          some_col
index             
0               48
1               58
2      some string
3               48
4               17

然后当您致电to_csv时,您不需要float_format param