【问题标题】:write to csv from DataFrame python pandas从 DataFrame python pandas 写入 csv
【发布时间】:2014-02-07 23:50:22
【问题描述】:

我编写了一个程序,在其中添加了两列并将答案写入 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]"

【问题讨论】:

    标签: python python-2.7 csv io pandas


    【解决方案1】:

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

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

    【讨论】:

    • 您也可以使用grouped = df.groupby(['A', 'B'],as_index=False).sum()来防止A和B被视为分组中的索引
    • .to_csv 现在似乎已被弃用,我的脚本说AttributeError: DataFrame object has no attribute 'to_csv'。我个人一直在使用 .toCSV 和我的数据框,它似乎工作正常。
    【解决方案2】:

    如果你想写成excel文件,使用这个命令

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

    【讨论】:

      猜你喜欢
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2018-10-05
      • 2020-02-01
      • 2021-09-24
      相关资源
      最近更新 更多