为什么我会得到这个;字段不在FieldName中;将Python dict写入csv文件时出错?
我得到以下错误:为什么我会得到这个;字段不在FieldName中;将Python dict写入csv文件时出错?,python,python-2.7,csv,dataframe,export-to-csv,Python,Python 2.7,Csv,Dataframe,Export To Csv,我得到以下错误: ValueError: dict contains fields not in fieldnames: 'R', '0', '0', '3' 当我运行此示例代码时: import csv import pandas as pd df = pd.DataFrame( data=[[ 0, 0, 2, 5, 0], [1478, 3877, 3674, 2328, 2539], [1613, 4088,
ValueError: dict contains fields not in fieldnames: 'R', '0', '0', '3'
当我运行此示例代码时:
import csv
import pandas as pd
df = pd.DataFrame(
data=[[ 0, 0, 2, 5, 0],
[1478, 3877, 3674, 2328, 2539],
[1613, 4088, 3991, 6461, 2691],
[1560, 3392, 3826, 4787, 2613],
[1608, 4802, 3932, 4477, 2705],
[1576, 3933, 3909, 4979, 2685],
[ 95, 229, 255, 496, 201],
[ 2, 0, 1, 27, 0],
[1438, 3785, 3589, 4174, 2215],
[1342, 4043, 4009, 4665, 3033]],
index=['05-01-11', '05-02-11', '05-03-11', '05-04-11', '05-05-11',
'05-06-11', '05-07-11', '05-08-11', '05-09-11', '05-10-11'],
columns=['R003', 'R004', 'R005', 'R006', 'R007']
)
myDATA=df.to_dict();
header=myDATA.keys()
with open("TestTry.csv", "w") as g:
writer = csv.DictWriter(g, delimiter=",", fieldnames=header,lineterminator='\r\n')
writer.writeheader()
for row in myDATA:
writer.writerow(row)
我想不出如何克服这个错误!您的帮助将不胜感激。正如@DeepSpace所建议的,您可以使用pandas
df.to_csv
将数据帧
保存到csv
文件
您的代码问题是,您必须将dataframe转换为一个列表,其中包含如下字典元素:list-like[{column->value},{column->value}]
,然后您可以循环该列表,使用DictWriter
将dict元素写入csv
文件,同时,您还可以添加索引
,像这样:
import csv
import pandas as pd
df = pd.DataFrame(
data=[[ 0, 0, 2, 5, 0],
[1478, 3877, 3674, 2328, 2539],
[1613, 4088, 3991, 6461, 2691],
[1560, 3392, 3826, 4787, 2613],
[1608, 4802, 3932, 4477, 2705],
[1576, 3933, 3909, 4979, 2685],
[ 95, 229, 255, 496, 201],
[ 2, 0, 1, 27, 0],
[1438, 3785, 3589, 4174, 2215],
[1342, 4043, 4009, 4665, 3033]],
index=['05-01-11', '05-02-11', '05-03-11', '05-04-11', '05-05-11',
'05-06-11', '05-07-11', '05-08-11', '05-09-11', '05-10-11'],
columns=['R003', 'R004', 'R005', 'R006', 'R007']
)
myDATA=df.to_dict(orient='records') #Convert DataFrame to dictionary(records) : list like [{column -> value}, ... , {column -> value}]
header = list(df.columns.values) #get column name ['R003', 'R004', 'R005', 'R006', 'R007']
index = list(df.index) #get index name ['05-01-11', '05-02-11', '05-03-11', '05-04-11', '05-05-11', '05-06-11', '05-07-11', '05-08-11', '05-09-11', '05-10-11']
with open("TestTry.csv", "w") as g:
writer = csv.DictWriter(g, delimiter=",", fieldnames=['index']+header,lineterminator='\r\n')
writer.writeheader()
for i,row in enumerate(myDATA):
temp_row = row
temp_row['index'] = index[i] #add index into dict
writer.writerow(temp_row)
有什么好的理由不使用吗?哎呀!我是Python的新手,但忘了:)。尽管如此,由于我正在学习Python,如果您能解释一下,了解导致错误的原因可能会有所帮助?您的
编写器是DictWriter
,其writerow
方法接受字典@Tiny.D如果您发布它,我会接受您的答案。请吧。