python - 将数据框的第三列放在下一行
问题描述
我的数据框包含三列,如下所示:
id no. name
1A 32 ABC
4D 34 CFD
3B 32 DGA
我想将第三列移动到连续的下一行,如下所示:
1A 32
ABC
4D 34
CFD
3B 32
DGA
这在 Python 中怎么可能?
我尝试通过创建两个数据框,其中一个包含“id 和 no”。和另一个“名称”,然后将它们合并。但我不喜欢它不干净的输出。
解决方案
您可以将name
系列拆分为一个新的数据帧并操作两个结果数据帧的索引。最后,concat
用来组合它们。
# split out dataframe of names
df_name = df.pop('name').to_frame('id')
df_name['no.'] = ''
# manipulate indices so they are non-overlapping
df_name.index = df_name.index * 2 + 1
df.index = df.index * 2
# concatenate two dataframes
res = pd.concat([df, df_name]).sort_index()
结果:
print(res)
id no.
0 1A 32
1 ABC
2 4D 34
3 CFD
4 3B 32
5 DGA
推荐阅读
- amazon-web-services - 上传到 Amzaon S3 文件夹盯着一个词
- amazon-web-services - 提供的角色没有足够的权限。(服务:AmazonAppConfig)
- python - 如何根据分隔符将一行拆分为多行,并将它们作为键:值对绑定到另一列?
- wordpress - 你能帮我确定目录的位置吗?WordPress 目录位于底部
- javascript - 无法使用 ReactJS 中的映射遍历对象
- graphql - 如何允许石墨烯GraphQl中的任何字段过滤
- laravel-8 - 如果失败则跳到下一个 http 请求(轮询)
- mongodb - 保存在 Controller 中时未调用 GORM 事件(beforeInsert)
- python - 如何使用 tkinter 和 opencv 在不冻结的情况下拍照?
- html - 标签按钮跳过一直是一个输入 - Angular 11