Skip to main content
 首页 » 编程设计

python之Pandas之按一列分组,按另一列排序,从第三列获取值

2025年05月04日19birdshome

我想获取 pandas 数据框,将其按一列分组,按另一列排序,然后从第三列中获取第一个元素并填充原始数据框。

这是我的原始 df.我想按 col_1 分组,按 col_2(升序)排序,然后从 col_3 中取出第一个元素并用结果填充 col_4。

df_in = pd.DataFrame({'col_1':['A', 'A', 'A', 'B', 'B', 'B'], 'col_2': [5,9,2, 3,7,1], 
                   'col_3': ['c','d','k','n','l','f']}) 

[

输出 df 应该是这样的:

df_out = pd.DataFrame({'col_1':['A', 'A', 'A', 'B', 'B', 'B'], 'col_2': [5,9,2, 3,7,1], 
                   'col_3': ['c','d','k','n','l','f'], 'col_4': ['k','k','k','f','f','f'], }) 

我可以用group和transform完成分组和排序,但不清楚如何提取第一个元素。

抱歉 SO 不能正确显示图像 ;-(

请您参考如下方法:

 df['col_4']=df.sort_values(['col_1','col_2']).groupby('col_1')['col_3'].transform(lambda x: x.iloc[0]) 

输出:

  col_1  col_2 col_3 col_4 
0     A      5     c     k 
1     A      9     d     k 
2     A      2     k     k 
3     B      3     n     f 
4     B      7     l     f 
5     B      1     f     f