Python 在每个gorup中查找第一个有效值
这是一项有点特殊的任务,但我正试图找到一种有效的方法,在每组的几列中找到第一个数值。因此,对于以下数据帧:Python 在每个gorup中查找第一个有效值,python,pandas,Python,Pandas,这是一项有点特殊的任务,但我正试图找到一种有效的方法,在每组的几列中找到第一个数值。因此,对于以下数据帧: df = pd.DataFrame({ 'a':[1,1,1,1,1,2,2,2], 'b':[2,np.nan,4,np.nan,5,np.nan,1,np.nan], 'c':[np.nan,1,4,0,4,np.nan,6,np.nan], 'd':[np.nan, np.nan, np.nan, 1,6,2,5,np.nan] }) 对于每个a,我
df = pd.DataFrame({
'a':[1,1,1,1,1,2,2,2],
'b':[2,np.nan,4,np.nan,5,np.nan,1,np.nan],
'c':[np.nan,1,4,0,4,np.nan,6,np.nan],
'd':[np.nan, np.nan, np.nan, 1,6,2,5,np.nan]
})
对于每个a
,我希望每列中都有一行包含第一个有效值,因此:
a b c d
0 1 2.0 1.0 1.0
2 2 1.0 6.0 2.0
因此,您可以先使用
检查(返回第一个非空值)
如果索引是matterb填充
+删除重复项
df.groupby('a').bfill().drop_duplicates('a')
Out[374]:
a b c d
0 1 2.0 1.0 1.0
5 2 1.0 6.0 2.0
@yatu ah-yw:-)B当然也可以,嗯,这比我想象的要简单,我想我只是没有给它足够的时间
df.groupby('a').first()
Out[369]:
b c d
a
1 2.0 1.0 1.0
2 1.0 6.0 2.0
df.groupby('a').bfill().drop_duplicates('a')
Out[374]:
a b c d
0 1 2.0 1.0 1.0
5 2 1.0 6.0 2.0