2014-01-18 11 views
8

私は2つの列を追加してCSVファイルに回答を書き込むプログラムを作成しましたが、列の選択のみを書きたいときにエラーが発生します。DataFrameからcsvに書き込むpython pandas

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および合計のデータを書き込むことができる方法: はここに私のロジックです。あなたはgroupby(['A', 'B'])呼ば以来 私は次のエラー

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]" 

答えて

10

AとBを取得するには、もはや列です。代わりに両方ともインデックスです。このように、index=Falseを除外してみてください。

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

また 'グループ化= df.groupby([ '使用することができます'、' B ']、as_index = False).sum() 'グループ化された – dlm

+0

のインデックスとして扱われないようにする' .to_csv'は今や廃止されているようですが、私のスクリプトは 'AttributeError:DataFrame object has no属性 'to_csv''です。私は個人的に私のデータフレームで '.toCSV'を使っていますが、うまくいくようです。 – Blairg23

1

あなたはExcelファイルとしてそれを書きたい場合は、このコマンドを使用

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