2016-07-29 2 views
3

私はpython 2.7.9のpandas 0.18.0で作業しています。空のデータフレームを集計するときに列を保持する

このように、結果のために別の列を超える合計その後、いくつかの列によってサンプルDataFrameとグループを取る:すべては偉大に見えるが、同じ操作は、空の上に事前に形成されると、その

>>> df = pandas.DataFrame([[1,2,3],[4,5,6],[1,2,9]], columns=['a','b','c']) 
>>> print df 
    a b c 
0 1 2 3 
1 4 5 6 
2 1 2 9 
>>> df.groupby(['a','b'], as_index=False)['c'].sum() 
    a b c 
0 1 2 12 
1 4 5 6 

DataFrameカラムは結果から削除されています

>>> empty = pandas.DataFrame(columns=['a','b','c']) 
>>> print empty 
Empty DataFrame 
Columns: [a, b, c] 
Index: [] 
>>> empty.groupby(['a','b'], as_index=False)['c'].sum() 
Empty DataFrame 
Columns: [] 
Index: [] 

は、コードの後半で結果から有効な列を参照するために誰かだったのは、キーエラーが発生します。列を維持する方法はありますか?

答えて

1

これはgroupby.sum()の標準的な結果だと思います(http://pandas.pydata.org/pandas-docs/stable/missing_data.html参照)。

私はデータフレームが空の場合、文はチェックあれば書くことであろうと考えることができる唯一の方法は、例えば:

if sum(empty.isnull().sum()) == 9: 
    print "empty dataframe" 
elif sum(empty.isnull().sum()) < 9: 
    empty.groupby(['a','b'], as_index=False)['c'].sum() 

これは、列ヘッダを使用して、空のデータフレームを維持する必要があります。 これが役立つことを願っています。

関連する問題