Python 获取第n行组并填入';无';如果缺少行
我有一个df:Python 获取第n行组并填入';无';如果缺少行,python,pandas,Python,Pandas,我有一个df: a b c 1 2 3 6 2 2 5 7 3 4 6 8 我希望每N行groupby a: w=df.groupby('a').nth(0) #first row x=df.groupby('a').nth(1) #second row df的第二组没有第二行,在本例中,我希望有“None”值 [In:] df.groupby('a').nth(1) [Out:] a b c 1 2 5 7 2 None None
a b c
1 2 3 6
2 2 5 7
3 4 6 8
我希望每N行groupby a:
w=df.groupby('a').nth(0) #first row
x=df.groupby('a').nth(1) #second row
df的第二组没有第二行,在本例中,我希望有“None”值
[In:] df.groupby('a').nth(1)
[Out:]
a b c
1 2 5 7
2 None None None
或者更简单一些:
df在组内有1-4行。如果一个组少于4行,我想扩展该组,使其有4行,并用“无”填充缺少的行。之后,如果我选择第n行组,我将获得所需的输出。一种方法是分配一个计数/秩列和重新索引/堆栈:
n=2
(df.assign(rank=df.groupby('a').cumcount())
.query(f'rank < @n')
.set_index(['a','rank'])
.unstack('rank')
.stack('rank', dropna=False)
.reset_index()
.drop('rank', axis=1)
)
一种方法是分配计数/秩列并重新索引/堆栈:
n=2
(df.assign(rank=df.groupby('a').cumcount())
.query(f'rank < @n')
.set_index(['a','rank'])
.unstack('rank')
.stack('rank', dropna=False)
.reset_index()
.drop('rank', axis=1)
)
如果您对某个特定的<代码> NTH <代码>感兴趣,但在某些组中没有足够的行,则可以考虑使用“<代码> ReCurdie >从< A:< /P>中的<代码>唯一< /代码>值。
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
如果您对某个特定的<代码> NTH <代码>感兴趣,但在某些组中没有足够的行,则可以考虑使用“<代码> ReCurdie >从< A:< /P>中的<代码>唯一< /代码>值。
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