gpt4 book ai didi

python - 通过对具有数字和字符串变量的 Dataframe 进行分组来转置

转载 作者:行者123 更新时间:2023-12-03 20:23:28 25 4
gpt4 key购买 nike

我有一个 DataFrame,我想将其转换为以下内容:

import pandas as pd
df = pd.DataFrame({'ID':[111,111,111,222,222,333],
'class':['merc','humvee','bmw','vw','bmw','merc'],
'imp':[1,2,3,1,2,1]})
print(df)
ID class imp
0 111 merc 1
1 111 humvee 2
2 111 bmw 3
3 222 vw 1
4 222 bmw 2
5 333 merc 1
所需输出:
    ID       0        1       2
0 111 merc humvee bmw
1 111 1 2 3
2 222 vw bmw
3 222 1 2
4 333 merc
5 333 1
我愿 transpose整个数据帧,但 grouped by特定列, ID在这种情况下并维护行 order .
我的尝试:我尝试使用 .set_index( ) 和 .unstack() ,但它没有用。

最佳答案

使用 GroupBy.cumcount 用于计数器,然后通过 DataFrame.stack reshape 和 Series.unstack :

df1 = (df.set_index(['ID',df.groupby('ID').cumcount()])
.stack()
.unstack(1, fill_value='')
.reset_index(level=1, drop=True)
.reset_index())
print (df1)
ID 0 1 2
0 111 merc humvee bmw
1 111 1 2 3
2 222 vw bmw
3 222 1 2
4 333 merc
5 333 1

关于python - 通过对具有数字和字符串变量的 Dataframe 进行分组来转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65992077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com