如何展开Python Pandas DataFrame并替换字符串合并其他DataFrame数据?
解决方法
可以通过 Pandas 拆分数据、交叉连接、字符串替换三步实现需求,具体代码和步骤如下:
1. 准备示例数据
先构造和你提供的结构一致的测试数据:
import pandas as pd # 模拟你的 Dataframe1 df1 = pd.DataFrame({ 'Text': [ '无关数据', '随机示例文本 {ExplodeElist2} 及更多随机示例文本。', '其他无关数据' ] }) # 模拟你的 EList2 elist2 = pd.DataFrame({ 'Name': ['Jack', 'Jon', 'Sally'] })
2. 拆分并处理需要展开的行
# 筛选出包含占位符的行 to_explode = df1[df1['Text'].str.contains('{ExplodeElist2}')].copy() # 添加临时键实现交叉连接(让每行对应所有 Name) to_explode['temp_key'] = 1 elist2['temp_key'] = 1 # 交叉连接生成所有组合 exploded_rows = to_explode.merge(elist2, on='temp_key') # 替换占位符为对应 Name exploded_rows['Text'] = exploded_rows['Text'].str.replace('{ExplodeElist2}', exploded_rows['Name']) # 清理临时列和多余列 exploded_rows = exploded_rows.drop(columns=['temp_key', 'Name'])
3. 合并结果并恢复顺序
# 筛选不需要展开的原始行 original_rows = df1[~df1['Text'].str.contains('{ExplodeElist2}')] # 合并并保持原数据的顺序 final_result = pd.concat([original_rows, exploded_rows]).sort_index(kind='merge').reset_index(drop=True)
运行后 final_result 就是你需要的输出结构。
内容的提问来源于stack exchange,提问作者user1574881
相关产品推荐
相关产品推荐

