[英]Pivot and Groupby with Pandas
I have the following dataframe:我有以下 dataframe:
DECLARANT PARTNER PRODUCT PERIOD VALUE KG
FR XC 1001 200501 10 20
FR XC 1002 200501 11 21
FR XC 1001 200502 12 22
FR XC 1002 200502 13 23
FR XC 1003 200502 14 24
And I want it transformed into something like this:我希望它变成这样的东西:
DECLARANT PARTNER PRODUCT VALUE KG
FR XC 1001 [10,12] [20,22]
FR XC 1002 [11,13] [21,23]
FR XC 1003 [nan,14] [nan,24]
That is, the VALUE
and KG
is pivoted based on PERIOD
, and if it doesn't exist in the PERIOD
it should be replaced with nan
.也就是说,
VALUE
和KG
基于PERIOD
进行旋转,如果PERIOD
中不存在,则应将其替换为nan
。
I've tried pivot
and groupby
.我试过
pivot
和groupby
。 But don't seem to get them to work together.但似乎没有让他们一起工作。 This kind-of gives me something but not really what I'm looking for:
这种给了我一些东西,但不是我真正想要的:
df.pivot_table(index=['DECLARANT','PARTNER','PRODUCT'],
columns=['PERIOD'],
values=['KG', 'VALUE'])
Use groupby
per columns and aggregate list
s:每列使用
groupby
并聚合list
:
df = (df.pivot_table(index=['DECLARANT','PARTNER','PRODUCT'],
columns=['PERIOD'],
values=['KG', 'VALUE'])
.groupby(axis=1, level=0)
.apply(lambda x: x.agg(list, 1)))
print (df)
KG VALUE
DECLARANT PARTNER PRODUCT
FR XC 1001 [20.0, 22.0] [10.0, 12.0]
1002 [21.0, 23.0] [11.0, 13.0]
1003 [nan, 24.0] [nan, 14.0]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.