Python 从数据帧写入csv

Python 从数据帧写入csv,python,python-2.7,csv,io,pandas,Python,Python 2.7,Csv,Io,Pandas,我写了一个程序,其中我添加了两列,并将答案写入CSV文件,但当我只想编写列的选择时,出现了错误。 我的逻辑是: import pandas as pd df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'bar'], 'B' : ['one', 'one', 'two', 'two',

我写了一个程序,其中我添加了两列,并将答案写入CSV文件,但当我只想编写列的选择时,出现了错误。 我的逻辑是:

import pandas as pd

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                           'foo', 'bar', 'foo', 'bar'],
                'B' : ['one', 'one', 'two', 'two',
                          'two', 'two', 'one', 'two'],
                'C' : [56, 2, 3, 4, 5, 6, 0, 2],
                'D' : [51, 2, 3, 4, 5, 6, 0, 2]})

grouped = df.groupby(['A', 'B']).sum()

grouped['sum'] = (grouped['C'] / grouped['D']) 
# print (grouped[['sum']])


a = pd.DataFrame(grouped)


a.to_csv("C:\\Users\\test\\Desktop\\test.csv", index=False, cols=('A','B','sum'))
我怎样才能只写A、B和Sum列的数据。 我得到以下错误

Traceback (most recent call last):
  File "C:\Users\test\Desktop\eclipse\yuy\group.py", line 19, in <module>
    a.to_csv("C:\\Users\\test\\Desktop\\test.csv", index=False, cols=('A','B','sum'))
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 1126, in to_csv
    date_format=date_format)
  File "C:\Python27\lib\site-packages\pandas\core\format.py", line 992, in __init__
    self.obj = self.obj.loc[:, cols]
  File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 1018, in __getitem__
    return self._getitem_tuple(key)
  File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 595, in _getitem_tuple
    self._has_valid_tuple(tup)
  File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 106, in _has_valid_tuple
    if not self._has_valid_type(k, i):
  File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 1100, in _has_valid_type
    (key, self.obj._get_axis_name(axis)))
KeyError: "[['A', 'B', 'sum']] are not in ALL in the [columns]"
回溯(最近一次呼叫最后一次):
文件“C:\Users\test\Desktop\eclipse\yuy\group.py”,第19行,在
a、 到csv(“C:\\Users\\test\\Desktop\\test.csv”,index=False,cols=('a','B','sum'))
文件“C:\Python27\lib\site packages\pandas\core\frame.py”,第1126行,在to\u csv中
日期\格式=日期\格式)
文件“C:\Python27\lib\site packages\pandas\core\format.py”,第992行,在\uuu init中__
self.obj=self.obj.loc[:,cols]
文件“C:\Python27\lib\site packages\pandas\core\index.py”,第1018行,在\uu getitem中__
返回self.\u getitem\u元组(键)
文件“C:\Python27\lib\site packages\pandas\core\index.py”,第595行,在\u getitem\u元组中
self.\u具有有效的\u元组(tup)
文件“C:\Python27\lib\site packages\pandas\core\index.py”,第106行,在\u中有\u有效的\u元组
如果不是self.\u具有有效的\u类型(k,i):
文件“C:\Python27\lib\site packages\pandas\core\index.py”,第1100行,在\u中具有\u有效\u类型
(键,self.obj.\u get\u axis\u name(axis)))
KeyError:“['A'、'B'、'sum']]不在[列]的所有列中”

A和B不再是列,因为您调用了
groupby(['A',B'])
。相反,它们都是索引。尝试省去
index=False
,如下所示:

a.to_csv("test.csv", cols=['sum'])

如果要将其写入excel文件,请使用以下命令

writer = pd.ExcelWriter('output.xlsx')
data_frame.to_excel(writer,'Sheet1')
writer.save()

您还可以使用
grouped=df.groupby(['A',B'],as_index=False).sum()
来防止A和B在grouped
中被视为索引。to_csv
现在似乎被弃用了,或者其他什么,我的脚本说
AttributeError:DataFrame对象没有属性'to csv'
。我个人一直在用
.toCSV
处理我的数据帧,它似乎工作得很好。