採用多指標可以幫助:
table = pd.pivot_table(apps, index=['app_name', 'date'],
columns=['is_match'],
values = 'rewards_count',
aggfunc=np.sum,
margins=True)
我總結了aggfunc=np.sum
所有罪名,並與margins=True
計算 總和True
和False
。 這些款項最終在All
:
is_match False True All
app_name date
NFL HUDDLE 2016 10/22/15 174063 1080 175143
10/23/15 18 908 926
10/24/15 79322 638 79960
All 253403 2626 256029
我補充一點,持有比例兩個新列:
table['percent_false'] = table[False]/table.All * 100
table['percent_true'] = table[True]/table.All * 100
結果是這樣的:
is_match False True All percent_false percent_true
app_name date
NFL HUDDLE 2016 10/22/15 174063 1080 175143 99.383361 0.616639
10/23/15 18 908 926 1.943844 98.056156
10/24/15 79322 638 79960 99.202101 0.797899
All 253403 2626 256029 98.974335 1.025665
有很多的表中額外的東西。只有你想要的選擇:
percent_true = table.ix[:-1, ['percent_true']]
給出:
is_match percent_true
app_name date
NFL HUDDLE 2016 10/22/15 0.616639
10/23/15 98.056156
10/24/15 0.797899
如果你想計數的平均值,因爲你在你的方法做, 不要使用aggfunc=np.sum
。您還需要手工來總結:
table = pd.pivot_table(apps, index=['app_name', 'date'],
columns=['is_match'],
values = 'rewards_count')
table['total'] = table[False] + table[True]
table['percent_false'] = table[False]/table.total * 100
table['percent_true'] = table[True]/table.total * 100
現在的結果是這樣的:
is_match False True total percent_false percent_true
app_name date
NFL HUDDLE 2016 10/22/15 58021 1080 59101 98.172620 1.827380
10/23/15 18 908 926 1.943844 98.056156
10/24/15 79322 638 79960 99.202101 0.797899
同樣,只選擇相關部分:
percent_true = table[['percent_true']]
給出:
is_match percent_true
app_name date
NFL HUDDLE 2016 10/22/15 1.827380
10/23/15 98.056156
10/24/15 0.797899
可以在appl之前發佈原始數據幀的少量記錄ying樞軸。? – WoodChopper
原因是您創建日期作爲列的關鍵,因此計算每個日期的平均值會更困難。你可以用group來處理。 – WoodChopper