[英]Groupby, pivot and return all columns in a pandas dataframe
I have a pandas dataframe
which looks like this:我有一个看起来像这样的熊猫dataframe
:
col1 col2 col3 col4 col5 status count
0 AA PP X Y 13.1764 0 1.0
1 AA PP X Y 12.145 0 1.0
2 AA PP X Y 13.17 0 2.0
3 AA PP X Y 23.5 0 2.0
4 AA PP X Y 1100.4 0 2.0
5 AA PP X Y 20.5 0 3.0
6 AA PP X Y 1300.0 0 3.0
...
What I am trying to do?我正在尝试做什么?
col1
按col1
分组count
然后按count
分组col5
values and append to everything else展平col5
值col5
加到其他所有内容The final dataframe should look like this:最终的数据框应如下所示:
AA col2 col3 col4 status count1 count2 count3
count 1.0 PP X Y 0 13.1764 12.145 NA
2.0 PP X Y 0 13.17 23.5 1100.4
3.0 PP X Y 0 20.5 1300.0 NA
I have seen a lot of groupyby
and pivot
questions and trust me I have tried a lot and wasted an hour but couldn't get it right.我看过很多groupyby
和pivot
问题,相信我,我已经尝试了很多,浪费了一个小时,但还是做对了。
If same values of all columns per groups like in sample data use GroupBy.cumcount
with pivot_table
:如果每个组的所有列的值与示例数据中的相同,请使用GroupBy.cumcount
和pivot_table
:
g = df.groupby('count').cumcount()
df1 = (df.pivot_table(index=['col1','count','col2','col3','col4','status'],
columns=g,
values='col5')
.add_prefix('count')
.reset_index())
print (df)
col1 count col2 col3 col4 status count0 count1 count2
0 AA 1.0 PP X Y 0 13.1764 12.145 NaN
1 AA 2.0 PP X Y 0 13.1700 23.500 1100.4
2 AA 3.0 PP X Y 0 20.5000 1300.000 NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.