gpt4 book ai didi

python - 根据 Pandas 中唯一行值的数量添加新列

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

我有一个结构如下的数据框:

ID | Name | Role  
1 | John | Owner
1 | Bob | Driver
2 | Jake | Owner
2 | Tom | Driver
2 | Sally | Owner
3 | Mary | Owner
3 | Sue | Driver

我想对 Role 列进行透视并将 Name 列作为值,但是由于某些 ID(在本例中为索引)在所有者角色中有多个人,而有些则没有,因此 pivot_table 函数没有工作。有没有办法为特定 ID 可能具有的每个额外所有者创建一个新列。有些可能有 2、3、4 个以上的所有者。谢谢!

示例输出如下:

ID | Owner_1 | Owner_2 | Driver
1 | John | NaN | Bob
2 | Jake | Sally | Tom
3 | Mary | NaN | Sue

这是我尝试过的:

pd.pivot_table(df,values='Name',index='ID',columns='Role')

DataError: No numeric types to aggregate

最佳答案

您可以使用 cumcount 为每个 ID 中的重复项目创建附加键,然后我们可以简单地使用 pivot

df.Role=df.Role+'_'+df.groupby(['ID','Role']).cumcount().add(1).astype(str)
df.pivot('ID','Role','Name')
Out[432]:
Role Driver_1 Owner_1 Owner_2
ID
1 Bob John None
2 Tom Jake Sally
3 Sue Mary None

关于python - 根据 Pandas 中唯一行值的数量添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845807/

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