我有一个pandas数据帧,它与以下内容非常相似:-
名称 | 状态 | |
---|---|---|
eric | 单个 | |
0 | ||
xavier | 夫妇 | |
sarah | 夫妇 | |
0 | ||
aaron | 离婚 | |
0 |
您可以使用groupby
并将每个组的串联应用于伪行:
(df
.groupby(df['name'].shift().eq('.').cumsum(), group_keys=False)
.apply(lambda g: pd.concat([g, pd.DataFrame(index=[0], columns=g.columns)]).fillna(''))
)
输出:
name status
0 eric single
1 . 0
0
2 xavier couple
3 sarah couple
4 . 0
0
5 aaron divorced
6 . 0
0
或者使用.
和concat:提取行
df2 = df[df['name'].eq('.')].copy()
df2.loc[:] = ''
pd.concat([df, df2]).sort_index(kind='stable')
输出:
name status
0 eric single
1 . 0
1
2 xavier couple
3 sarah couple
4 . 0
4
5 aaron divorced
6 . 0
6