【发布时间】:2018-10-16 23:48:42
【问题描述】:
我需要以 2 种方式旋转/重塑长格式数据: 1)添加日期列(End-of_month)并填写数值(总计) 2)添加日期列(End-of_month)并填写日期值(在上一个数据透视中达到“总”值的月份)
我可以做到 1:
data = pd.DataFrame({'date': ['1-12-2016', '1-23-2016', '2-23-2016', '2-1-2016', '3-4-2016'],
'EOM': ['1-31-2016', '1-31-2016', '2-28-2016', '2-28-2016', '3-31-2016'],
'country':['uk', 'usa', 'fr','fr','uk'],
'tr_code': [10, 21, 20, 10,12],
'TOTAL': [435, 367,891,1234,231]
})
data['EOM'] = pd.to_datetime(data['EOM'])
data['date'] = pd.to_datetime(data['date'])
data_total = data.pivot_table(values='TOTAL', index=['country','tr_code'], columns='EOM')
Out[73]:
EOM 2016-01-31 2016-02-28 2016-03-31
country tr_code
fr 10 NaN 1234.0 NaN
20 NaN 891.0 NaN
uk 10 435.0 NaN NaN
12 NaN NaN 231.0
usa 21 367.0 NaN NaN
但是,尝试使用“日期”更改值参数会产生: DataError:没有要聚合的数字类型
我基本上想要两个 df——一个是我完成的,另一个是相同格式的,但不是“TOTAL”值,而是完成该总数的“日期”。
非常感谢任何帮助。
【问题讨论】:
-
您应该小心,
pivot_table的默认聚合函数是均值,因此当每个 bin 有多个测量值时,您将计算平均值,而不是总数。跨度>
标签: python-3.x pandas