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

因此,您可以先使用
检查
(返回第一个非空值)

如果索引是matter
b填充
+
删除重复项

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