也许这很容易,但我无法自己解决这个问题。
我有以下DataFrame:
Date Currency Amount
0 2014-10-17 EUR -20000000
1 2014-10-17 EUR -80000000
2 2014-10-17 USD -20000000
3 2014-10-18 JPY -20000000
4 2014-10-19 USD -10000000
5 2014-10-19 USD -20000000
6 2014-10-20 JPY -20000000
7 2014-10-20 JPY -20000000
并希望将货币代码设置为列名,同时将每天的所有金额相加,因此结果如下:
Date EUR USD JPY
0 2014-10-17 -100000000 -20000000 0.0
1 2014-10-18 0.0 0.0 -20000000
2 2014-10-19 0.0 -30000000 0.0
3 2014-10-20 0.0 0.0 -40000000
任何线索?
答案 0 :(得分:4)
使用.pivot_table
:
>>> df.pivot_table(index='Date', columns='Currency',
... values='Amount', aggfunc='sum', fill_value=0)
Currency EUR JPY USD
Date
2014-10-17 -100000000 0 -20000000
2014-10-18 0 -20000000 0
2014-10-19 0 0 -30000000
2014-10-20 0 -40000000 0
或,.groupby
后跟.unstack
,后跟.fillna
:
>>> df.groupby(['Date', 'Currency'])['Amount'].agg('sum').unstack().fillna(0)
Currency EUR JPY USD
Date
2014-10-17 -100000000 0 -20000000
2014-10-18 0 -20000000 0
2014-10-19 0 0 -30000000
2014-10-20 0 -40000000 0