2017-11-19 19 views
1

私はPython 2.7を使用しています。私は私のデータがどのように見えるように、それぞれの説明と月で合計したいPython Pandas合計は日付と説明

raw_data = {'Date': ['12/1/2016', '12/4/2016','12/23/2016', '1/18/2017','1/18/2017','1/19/2017'], 
    'Account': ['aa1', 'aa2','aa1', 'aa1', 'aa1', 'aa2'], 
    'Description': ['store1', 'store2','store1', 'store2','store1','store2' ], 
    'Amount': [26.43, 24.99, 31.54,45.32, 2.00, 15.41], 
    'Category': ['G','G','G','G','G','G'], 
    'Initials': ['FR','DB','FR','DB','FR','FR']} 
df = pd.DataFrame(raw_data, columns = ['Date','Account','Description','Amount','Category','Initials']) 

のように見えるパンダデータフレームを持っている:24.99 store2 2016年12月
日付説明金額
2016年12月store1 57.97

2017年1月には、2017年1月2.00
をstore1

私は月ごとに合計し、以下のコードを書かれているが、私は説明欄を組み込む方法で立ち往生しています60.73をstore2。

#convert Date to datetimeindex 
df['Date'] = pd.to_datetime(df['Date']) 
df = df.set_index('Date') 

#sum by month 
df = df.groupby(pd.TimeGrouper("M")).sum() 
df 

ご指摘いただければ幸いです。ありがとう。

答えて

2

変換datetime sがYearname of monthをフォーマットし、groupbyに列Descriptionを追加するために使用strftime:削除の警告について

df = df.set_index('Date') 

df = df.groupby([pd.TimeGrouper("M"),'Description']).sum().reset_index() 
print (df) 
     Date Description Amount 
0 2016-12-31  store1 57.97 
1 2016-12-31  store2 24.99 
2 2017-01-31  store1 2.00 
3 2017-01-31  store2 60.73 

:必要Datetime sがのみ別の列Descriptionを追加する場合

df = df.groupby([df['Date'].dt.strftime('%b %Y'),'Description']).sum().reset_index() 
print (df) 
     Date Description Amount 
0 Dec 2016  store1 57.97 
1 Dec 2016  store2 24.99 
2 Jan 2017  store1 2.00 
3 Jan 2017  store2 60.73 

新しいバージョンのパンダでGrouper

df = df.groupby([pd.Grouper(freq="M"),'Description']).sum().reset_index() 
print (df) 
     Date Description Amount 
0 2016-12-31  store1 57.97 
1 2016-12-31  store2 24.99 
2 2017-01-31  store1 2.00 
3 2017-01-31  store2 60.73 
5

groupbydt.monthおよびDescriptionです。 dt.strftimeを使用し、月名に月の数値を変換し、その後はグループ化を実行します。

df.groupby([df.Date.dt.strftime('%b %Y'), 
     'Description']).Amount.sum().reset_index() 

     Date Description Amount 
0 Dec 2016  store1 57.97 
1 Dec 2016  store2 24.99 
2 Jan 2017  store1 2.00 
3 Jan 2017  store2 60.73 
関連する問題