gpt4 book ai didi

python - 将重复数据从行转换为列

转载 作者:太空宇宙 更新时间:2023-11-03 21:38:24 25 4
gpt4 key购买 nike

我有这样的数据:

name    val trc
jin 23 apb
tim 52 nmq
tim 61 apb
tim 92 rrc
ron 13 apq
stark 34 rrc
stark 34 apq
ron 4 apq
sia 6 wer

我正在寻找类似的输出:

name    val_1   trc1    val_2   trc2    val_3   trc3
jin 23 apb
tim 92 rrc 61 apb 52 nmq
ron 13 apq 4 apq
stark 34 rrc 34 apq
sia 6 wer

我想将行中的重复值转换为列,其中最大值在 val_1 中,较小值在 val_2 中,依此类推。即使 trc1 值也应该对应于 val_1。请让我知道如何实现这一目标。

我尝试过这种方法:

d = {k: v.reset_index(drop=True) for k, v in df.groupby('name')}
pd.concat(d, axis=1).reset_index()
index jin ron sia stark tim \
name val trc name val trc name val trc name val trc name
0 0 jin 23.0 apb ron 13.0 apq sia 6.0 wer stark 34.0 rrc tim
1 1 NaN NaN NaN ron 4.0 apq NaN NaN NaN stark 34.0 apq tim
2 2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN tim

最佳答案

用途:

df1 = df.sort_values(['name','val'], ascending=False)

df1 = df1.set_index('name').stack().groupby(level=0).apply(list).apply(pd.Series)

df1 = df1.reset_index().fillna("")

print(df1)

name 0 1 2 3 4 5
0 jin 23 apb
1 ron 13 apq 4 apq
2 sia 6 wer
3 stark 34 rrc 34 apq
4 tim 92 rrc 61 apb 52 nmq

关于python - 将重复数据从行转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096446/

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