gpt4 book ai didi

python - 如何转换每行可变列大小的数据框?

转载 作者:太空宇宙 更新时间:2023-11-04 00:20:52 24 4
gpt4 key购买 nike

我有以下数据框:

ID      Code
5966856 A
5966856 B
5966857 A
5966854 A
5966854 B
5966854 C
6648070 A
6648074 A
6648075 B

我希望将其转换为:

ID      Code_1 Code_2 Code_3
5966856 A B NaN
5966857 A NaN NaN
5966854 A B C
6648070 A NaN NaN
6648074 A NaN NaN
6648075 B NaN NaN

我尝试了 groupby 和 pivot,但无论哪种情况,我都需要定义列,在我的例子中,这些列是可变的。最大列数等于每个唯一 ID 的最大代码数。对于其余部分,我填充为 NaN。

最佳答案

使用:

  • 首先将列代码转换为列表每组
  • 然后使用DataFrame构造函数
  • 通过自定义函数重命名
  • reset_index来自 index
  • 的列

a = df.groupby('ID')['Code'].apply(list)
c = lambda x: 'Code_{}'.format(x+1)
df = pd.DataFrame(a.values.tolist(), index=a.index).rename(columns=c).reset_index()

备选方案:


a = df.groupby('ID')['Code'].cumcount().add(1).astype(str).radd('Code_')
df = df.set_index(['ID', a])['Code'].unstack().reset_index()

print (df)
ID Code_1 Code_2 Code_3
0 5966854 A B C
1 5966856 A B None
2 5966857 A None None
3 6648070 A None None
4 6648074 A None None
5 6648075 B None None

关于python - 如何转换每行可变列大小的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49152664/

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