格式化csv文件

时间:2017-06-07 20:38:50

标签: python dataframe formatting

我有一个没有格式化的csv文件。我需要格式化csv文件。

import pandas
df = pandas.read_csv('abc.csv')
df['speed'] = df['speed'].map('{:06,.2f}'.format)
df.to_csv("FINAL.csv")

错误:

Traceback (most recent call last):
File "<stdin>", line 3, in <module>
File "C:\Python27\ArcGIS10.4\lib\site-packages\pandas\core\series.py", line 2009, in map
mapped = map_f(values, arg)
File "pandas\src\inference.pyx", line 1064, in pandas.lib.map_infer (pandas\lib.c:58525)
ValueError: Unknown format code 'f' for object of type 'str'

例如:

df['speed'] = [54,156,3]

预期产出:

speed
054.00
156.00
003.00

1 个答案:

答案 0 :(得分:2)

删除字符串格式中的逗号,它应该可以正常工作。

import pandas as pd
df = pd.DataFrame([54,156,3])
df[0].map('{:06.2f}'.format)

输出:

054.00
156.00
003.00

这是字符串格式化的重新来源:

https://pyformat.info/

编辑:
听起来这是一个混乱的数据问题。我建议您在阅读csv文件时尝试以下选项:

df = pandas.read_csv('abc.csv', dtype=object)
df['speed'] = df['speed'].apply(pd.to_numeric, errors='coerce')
df['speed'] = df['speed'].map('{:06.2f}'.format)

errors='coerce'会尝试转换为float,如果不能,则返回NaN