我想获取 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
