我有以下数据框:
df=pd.DataFrame({'id':['A','A','B','C','D'],'Name':['apple','apricot','banana','orange','citrus'], 'count':[2,3,6,5,12]})
id Name count
0 A apple 2
1 A apricot 3
2 B banana 6
3 C orange 5
4 D citrus 12
我试图按“id”列对数据框进行分组,但也将重复的名称保留为单独的列。以下是预期输出:
id sum(count) id1 id2
0 A 5 apple apricot
1 B 6 banana na
2 C 5 orange na
3 D 12 citrus na
我尝试使用以下语句按 id 列进行分组,但这完全删除了 name 列。
df.groupby(['id'], as_index=False).sum()
如果有任何建议/帮助,我将不胜感激。
最佳答案
您可以使用DataFrame.pivot_table
为此:
g = df.groupby('id')
# Generate the new columns of the pivoted dataframe
col = g.Name.cumcount()
# Sum of count grouped by id
sum_count = g['count'].sum()
(df.pivot_table(values='Name', index='id', columns = col, aggfunc='first')
.add_prefix('id')
.assign(sum_count = sum_count))
id0 id1 sum_count
id
A apple apricot 5
B banana NaN 6
C orange NaN 5
D citrus NaN 12
关于python - 对包含重复项的列进行分组,但同时保留重复信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54753710/