Skip to main content
 首页 » 编程设计

python之Pandas之为 Pandas 中的每个组插入空白行

2025年05月04日12rubylouvre

我有一个数据框

import pandas as pd 
import numpy as np 
df1=pd.DataFrame({'group':[1,1,2,2,2], 
             'value':[2,3,np.nan,5,4]}) 
df1 
 
    group   value 
0   1       2 
1   1       3 
2   2       NaN 
3   2       5 
4   2       4 

我想在每个 value 的值为 NaN 的组之后添加一行。期望输出是:

   group   value 
0   1       2 
1   1       3 
2   1       NaN 
3   2       NaN 
4   2       5 
5   2       4 
6   2       NaN 

在我的真实数据集中,除了 value 之外,我还有很多组和更多列,我希望它们在新添加的行中都是 NaN。

非常感谢您的帮助

请您参考如下方法:

concat 与 append

s = df1.groupby('group') 
out = pd.concat([i.append({'value': np.nan}, ignore_index=True) for _, i in s]) 
out.group = out.group.ffill().astype(int) 

apply 和 append[1]

df1.groupby('group').apply( 
    lambda d: d.append({'group': d.name}, ignore_index=True).astype({'group': int}) 
).reset_index(drop=True) 

两者都产生:

   group  value 
0      1    2.0 
1      1    3.0 
2      1    NaN 
3      2    NaN 
4      2    5.0 
5      2    4.0 
6      2    NaN 

[1] 本解决方案由您的本地@piRSquared提供给您