我需要枢转/重塑长格式数据2种方式: 1)添加日期列(月末)并填写数值(总计) 2)添加日期列(月末)并填写日期值(在上一个枢轴中达到“总”值的月日)
我可以用1做
w2ui['my_grid']
但是,尝试使用'date'更改value参数会产生: DataError:没有要聚合的数字类型
我基本上想要两个df,一个是我完成的,另一个是相同格式的,但不是“ TOTAL”值是完成总计的“日期”。
非常感谢您的帮助。
答案 0 :(得分:7)
set_index
与unstack
这假设['country', 'tr_code', 'EOM']
的组合是唯一的,并且如果不是的话将会中断。这就是为什么聚合功能很重要的原因。如果以及何时获得组合的多个观察值,我们需要一个规则。
data.set_index(['country', 'tr_code', 'EOM']).date.unstack()
EOM 2016-01-31 2016-02-28 2016-03-31
country tr_code
fr 10 NaT 2016-02-01 NaT
20 NaT 2016-02-23 NaT
uk 10 2016-01-12 NaT NaT
12 NaT NaT 2016-03-04
usa 21 2016-01-23 NaT NaT
aggfunc
/ pivot_table
默认的汇总功能为mean
,这对于日期没有意义。 first
可以。还可以使用ALollz在删除答案中使用的last
。
data.pivot_table(
values='date', index=['country', 'tr_code'], columns='EOM', aggfunc='first')
EOM 2016-01-31 2016-02-28 2016-03-31
country tr_code
fr 10 NaT 2016-02-01 NaT
20 NaT 2016-02-23 NaT
uk 10 2016-01-12 NaT NaT
12 NaT NaT 2016-03-04
usa 21 2016-01-23 NaT NaT
groupby
与pivot_table
相同的操作方式少用迷人的方式
data.groupby(['country', 'tr_code', 'EOM']).date.first().unstack()
EOM 2016-01-31 2016-02-28 2016-03-31
country tr_code
fr 10 NaT 2016-02-01 NaT
20 NaT 2016-02-23 NaT
uk 10 2016-01-12 NaT NaT
12 NaT NaT 2016-03-04
usa 21 2016-01-23 NaT NaT