希望标题表述清楚,我只想补充一点,可以假定每个键具有相同数量的值。
在线搜索标题产生了以下解决方案: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循环非常耗费计算资源。
df = df.sort_values('b')
然后再应用我的解决方案吗? - jezraeldf = df1.pivot('a','g','b')
,然后使用df = np.sort(df, axis=1)
进行排序,排序后使用.reset_index().rename_axis(None, axis=1)
。原因很简单-在重置索引后,第一列不是数字,而且np.sort
可能会出问题。所以如果先进行排序,然后再重置索引,那么只需处理数值列(new_0 new_1 new_2
)即可。 - jezrael