gpt4 book ai didi

Pandas - 尝试根据公共(public)键将来自多行的数据组合成一行

转载 作者:行者123 更新时间:2023-12-04 15:29:03 24 4
gpt4 key购买 nike

我有以下格式的数据框:

cust_id, sales
101, apple:1
101, banana:2
102, apple:1
103, apple:3
103, banana:5
103, apple:7

我正在尝试将 cust_id 的所有销售数据放在一行中。有时同一个 cust_id 也可以有同一个产品的多个销售。对于此类条目,我想创建一个新列。

这就是我期望的最终输出:

cust_id, apple, banana, apple
101, 1, 2
102, 1,
103, 3, 5, 7

最佳答案

您需要将sales 列拆分为多个列。使用groupby.cumcount分隔重名,使用pd.crosstab实现最终结果

df1 = df.set_index('cust_id').sales.str.split(':', expand=True)
s = df1.groupby(['cust_id', 0]).cumcount().astype(str).replace('0','')
df_final = pd.crosstab(df1.index, df1[0]+s, df1[1], aggfunc='first')

Out[111]:
col_0 apple apple1 banana
row_0
101 1 None 2
102 1 None None
103 3 7 5

注意:透视表总是对列名进行排序,因此输出数据框的列名已排序

关于Pandas - 尝试根据公共(public)键将来自多行的数据组合成一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61643635/

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