如何在pandas中将数据框行转换为Topic_1~5与Coauthor_1~5列?
解决方案
可以通过pandas的字符串拆分、列重命名和合并功能实现需求,具体步骤和代码如下:
1. 模拟原始数据框
先创建和你提供数据一致的示例数据框,方便测试:
import pandas as pd data = { 'Topics': [ 'Object Detection; Deep Learning; IOU', 'Character Recognition; Tesseract; Number', 'Robot; End Effectors; Malus', 'Crops; Plant Diseases and Disorders; Beriberi', 'Swarm Robotics; Swarm; Social Insects' ], 'co-authors': [ 'Bandala, Argel A.', 'Vicerra, Ryan Rhay P.', 'Concepcion, Ronnie', 'Sybingco, E.', 'Billones, Robert Kerwin C.' ] } df = pd.DataFrame(data)
2. 拆分并生成主题列
将Topics列按; 拆分,扩展为指定的5个主题列,不足5个主题的行自动填充NaN:
# 拆分Topics列,expand=True将拆分结果转为数据框 topics_expanded = df['Topics'].str.split('; ', expand=True) # 重命名列名为Topic_1到Topic_5,仅保留前5列(多余内容丢弃,不足补NaN) topics_expanded.columns = [f'Topic_{i+1}' for i in range(5)]
3. 拆分并生成合作者列
同样处理co-authors列,兼容单个或多个分号分隔的合作者场景:
# 拆分co-authors列 coauthors_expanded = df['co-authors'].str.split('; ', expand=True) # 重命名列名为Coauthor_1到Coauthor_5 coauthors_expanded.columns = [f'Coauthor_{i+1}' for i in range(5)]
4. 合并生成最终数据框
将拆分后的主题列和合作者列按列合并,得到目标结构:
new_df = pd.concat([topics_expanded, coauthors_expanded], axis=1)
执行后new_df即为需求中的数据框,不足5个主题/合作者的位置会显示NaN。
内容的提问来源于stack exchange,提问作者Ken.WS
相关产品推荐
相关产品推荐

