熊猫 - 为熊猫中的每个组插入空白行

Gia*_* Do 5 python dataframe pandas

我有一个数据框

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
Run Code Online (Sandbox Code Playgroud)

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

   group   value
0   1       2
1   1       3
2   1       NaN
3   2       NaN
4   2       5
5   2       4
6   2       NaN
Run Code Online (Sandbox Code Playgroud)

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

非常感谢您的帮助

use*_*203 5

concatappend

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)
Run Code Online (Sandbox Code Playgroud)

applyappend[1]

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

两者都产生:

   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
Run Code Online (Sandbox Code Playgroud)

[1]此解决方案由您当地的@piRSquared带给您

  • `df1.groupby('group').apply(lambda d: d.append({'group': d.name}, ignore_index=True)).reset_index(drop=True)` (2认同)