gpt4 book ai didi

python - 每个值都有新列的 Pandas groupby

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:49 24 4
gpt4 key购买 nike

我希望标题不言自明;我只想补充一点,可以假设每个键都具有相同数量的值。网上搜索题目得到如下解决方案:

Split pandas dataframe based on groupby

这应该可以解决我的问题,但事实并非如此。我举个例子:

输入:

pd.DataFrame(data={'a':['foo','foo','foo','bar','bar','bar'],'b':[1,2,3,4,5,6]})

输出:

pd.DataFrame(data={'a':['foo','bar'],'b':[1,4],'c':[2,5],'d':[3,6]})

直觉上,这将是一个没有聚合函数的 groupby 函数,或者是一个从键中创建列表的聚合函数。

显然,它可以使用 for 循环等“手动”完成,但是对大型数据集使用 for 循环在计算上非常昂贵。

最佳答案

使用GroupBy.cumcount对于 Seriesg 列,然后按 DataFrame.set_index reshape + Series.unstackDataFrame.pivot ,最后一次数据清理由 DataFrame.add_prefix , DataFrame.rename_axisDataFrame.reset_index :

g = df1.groupby('a').cumcount()
df = (df1.set_index(['a', g])['b']
.unstack()
.add_prefix('new_')
.reset_index()
.rename_axis(None, axis=1))
print (df)
a new_0 new_1 new_2
0 bar 4 5 6
1 foo 1 2 3

或者:

df1['g'] = df1.groupby('a').cumcount()
df = df1.pivot('a','g','b').add_prefix('new_').reset_index().rename_axis(None, axis=1)
print (df)
a new_0 new_1 new_2
0 bar 4 5 6
1 foo 1 2 3

关于python - 每个值都有新列的 Pandas groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55558915/

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