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

2024-04-08

我想采用 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']})

[original_df[1]

输出 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])

Output:

  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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas - 按一列分组,按另一列排序,从第三列获取值 的相关文章

随机推荐