为什么我会得到这个;字段不在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如果您发布它,我会接受您的答案。请吧。