简体   繁体   English

Groupby,透视并返回熊猫数据框中的所有列

[英]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?我正在尝试做什么?

  1. Group by col1col1分组
  2. Then group by count然后按count分组
  3. Flatten the col5 values and append to everything else展平col5col5加到其他所有内容

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.我看过很多groupybypivot问题,相信我,我已经尝试了很多,浪费了一个小时,但还是做对了。

If same values of all columns per groups like in sample data use GroupBy.cumcount with pivot_table :如果每个组的所有列的值与示例数据中的相同,请使用GroupBy.cumcountpivot_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM