gpt4 book ai didi

python - 将列转换为 Pandas 数据框中的行

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

我有两列的 Pandas 数据框。一个是唯一标识符,第二个是附加到此唯一标识符的产品名称。我有重复的标识符和产品名称值。我想将一列产品名称转换为多列而不重复标识符。也许我需要通过标识符聚合产品名称。

我的数据框看起来像:

ID  Product_Name
100 Apple
100 Banana
200 Cherries
200 Apricots
200 Apple
300 Avocados

想要这样的数据框:

ID 
100 Apple Banana
200 Cherries Apricots Apple
300 Avocados

每个标识符的每个产品都必须在单独的列中

我尝试了 pd.meltpd.pivotpd.pivot_table 但只有错误,这个错误显示 No numeric types聚合

知道怎么做吗?

最佳答案

使用cumcount通过 set_index 将新列名称命名为 MultiIndex并通过 unstack reshape :

df = df.set_index(['ID',df.groupby('ID').cumcount()])['Product_Name'].unstack()

或者通过构造函数创建列表Series和新的DataFrame:

s = df.groupby('ID')['Product_Name'].apply(list)
df = pd.DataFrame(s.values.tolist(), index=s.index)

print (df)
0 1 2
ID
100 Apple Banana NaN
200 Cherries Apricots Apple
300 Avocados NaN NaN

但是如果想要 2 列 DataFrame:

df1 = df.groupby('ID')['Product_Name'].apply(' '.join).reset_index(name='new')
print (df1)
ID new
0 100 Apple Banana
1 200 Cherries Apricots Apple
2 300 Avocados

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

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