【发布时间】:2018-07-30 21:40:29
【问题描述】:
我有以下代码:
import pandas as pd
df=pd.read_csv("https://www.dropbox.com/s/90y07129zn351z9/test_data.csv?dl=1", encoding="latin-1")
pvt_received=df.pivot_table(index=['site'], values = ['received','sent'], aggfunc = { 'received' : 'count' ,'sent': 'count'}, fill_value=0, margins=True)
pvt_received['to_send']=pvt_received['received']-pvt_received['sent']
column_order = ['received', 'sent','to_send']
pvt_received_ordered = pvt_received.reindex_axis(column_order, axis=1)
pvt_received_ordered.to_csv("test_pivot.csv")
table_to_send = pd.read_csv('test_pivot.csv', encoding='latin-1')
table_to_send.rename(columns={'site':'Site','received':'Date Received','sent':'Date Sent','to_send':'Date To Send'}, inplace=True)
table_to_send.set_index('Site', inplace=True)
table_to_send
生成此表:
Date Received Date Sent Date To Send
Site
2 32.0 27.0 5.0
3 20.0 17.0 3.0
4 33.0 31.0 2.0
5 40.0 31.0 9.0
All 106.0 106.0 0.0
但是这个参数 margins=True 没有给出每列总数的正确结果。例如,接收日期应该是 125 而不是 106,发送日期应该是 106(这是正确的),发送日期应该是 19 而不是 0.0(零)。问题:我应该改变什么以获得正确的数字?此外,缺少应该对每一行求和的所有内容。提前非常感谢。
【问题讨论】:
标签: python pandas pivot-table