【发布时间】:2021-09-21 19:07:54
【问题描述】:
在数据框中,执行 groupby['col'].first() 时,我们会在每列中获得第一个非 nan 值(最后一个相同)。 我试图获得第二个非 nan 值,但我找不到方法。我发现的唯一相关函数是 groupby['col'].nth(1),但如果存在,它只是给了我带有 nans 的第二行。 groupby['col'].nth(1, dropna='any') 没有完成这项工作,因为它跳过带有 nans 的行并且不单独检查每一列。 示例:
df = pd.DataFrame({
'A': [1, 1, 1, 1, 1],
'B': [np.nan, 2, 3, 4, 5],
'C': [np.nan, np.nan, 3, 4, 5]
}, columns=['A', 'B', 'C'])
first() 行为:
df.groupby('A').first().reset_index()
结果:
A B C
0 1 2.0 3.0
另一方面: df.groupby('A').nth(0, dropna='any').reset_index() 给出:
A B C
0 1 3.0 3.0
有没有办法在第 n 个函数中获得与第一个/最后一个相同的行为,以便我也可以将它应用于第二个或任何第 n 个项目?
【问题讨论】:
标签: pandas pandas-groupby