首页 > 解决方案 > 如果缺少行,则获取第 n 行组并填充“无”

问题描述

我有一个df:

   a  b  c
1  2  3  6
2  2  5  7
3  4  6  8

我想要 groupby 的每一行:

w=df.groupby('a').nth(0) #first row
x=df.groupby('a').nth(1)  #second row

df 的第二组没有第二行,在这种情况下,我想要“无”值。

[In:] df.groupby('a').nth(1)
[Out:]

  a    b    c
1 2    5    7
2 None None None

或者更简单:df 在组中有 1-4 行。如果一个组少于 4 行,我想扩展该组,使其有 4 行并用“无”填充缺失的行。之后,如果我选择第 n 行组,我就会得到所需的输出。

标签: pythonpandas

解决方案


如果您只对特定的行感兴趣,nth但在某些组中没有足够的行,您可以考虑使用列reindex中的unique值,例如:

print (df.groupby('a').nth(1).reindex(df['a'].unique()).reset_index())
   a    b    c
0  2  5.0  7.0
1  4  NaN  NaN

推荐阅读