【发布时间】:2021-09-14 13:36:16
【问题描述】:
这个问题已经被问到了excel。 How to automatically insert a blank row after a group of data。我想知道在 pandas 数据框中是否有一个功能可以做同样的事情。
【问题讨论】:
-
在这个网站上搜索如何添加空行会返回几个很好的答案。您是否尝试过先寻找答案?
这个问题已经被问到了excel。 How to automatically insert a blank row after a group of data。我想知道在 pandas 数据框中是否有一个功能可以做同样的事情。
【问题讨论】:
可能还有其他(更快?)方法可以做到这一点。这里是一个尝试。
首先创建一个示例数据框以用于此示例。我们假设索引定义了需要拆分的组:
users = {'user_id': ['A','A','A','A', 'B','B','B'],
'status': ['S1', 'S2', 'S1', 'S3', 'S1', 'S2', 'S1'],
'value': [100, 30, 100, 20, 50, 30, 60 ],
}
df1 = pd.DataFrame(users, columns = ['user_id', 'status', 'value'])
df1.set_index('user_id', drop=True, inplace=True)
这里是输出:
| user_id | status | value |
|---|---|---|
| A | S1 | 100 |
| A | S2 | 30 |
| A | S1 | 100 |
| A | S3 | 20 |
| B | S1 | 50 |
| B | S2 | 30 |
| B | S1 | 60 |
我们创建一个带有空行的新数据框,索引的每个唯一元素一个:
df2 = pd.DataFrame(index=df1.index.drop_duplicates(keep='first'))
追加新行并对索引进行排序:
df_merged = df1.append(df2)
df_merged.sort_index(inplace=True)
最终输出如下:
| user_id | status | value |
|---|---|---|
| A | S1 | 100 |
| A | S2 | 30 |
| A | S1 | 100 |
| A | S3 | 20 |
| A | NaN | NaN |
| B | S1 | 50 |
| B | S2 | 30 |
| B | S1 | 60 |
| B | NaN | NaN |
【讨论】: