Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 格式化csv文件_Python_Dataframe_Formatting - Fatal编程技术网

Python 格式化csv文件

Python 格式化csv文件,python,dataframe,formatting,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:\Python2

我有一个没有格式的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'
预期产出:

speed
054.00
156.00
003.00

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

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

054.00
156.00
003.00
以下是字符串格式的源代码:

编辑:
听起来这是一个数据混乱的问题。我建议在读取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='concurve'
将尝试转换为float,如果转换失败,将返回
NaN

即使我删除了逗号(,),我也会收到相同的错误。您可以尝试同样的方法,从csv文件导入值吗?从编辑中,看起来您会收到不同的错误<代码>值错误:无效的转换规范更改为
值错误:类型为“str”的对象的未知格式代码“f”
。确保您的值被读取为float。尝试
pd.to\u numeric()
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)