如何在pandas中合并两个DataFrame?是否需要用循环或Linux操作?
Pandas合并两个DataFrame实现方案
核心结论
该需求可以通过pandas内置方法直接实现,无需编写循环,也无需切换到Linux环境操作,全平台pandas运行逻辑完全一致,内置方法的执行效率远高于手动实现的循环逻辑。
具体实现代码
1. 导入依赖并构造示例DataFrame
如果你已经有现成的df1、df2可以跳过这一步,这里仅为还原你的数据场景:
import pandas as pd # 构造第一个DataFrame df1 = pd.DataFrame([ ['john', 21, 56, 'M', 'futboll'], ['martha', 25, 43, 'F', 'soccer'], ['esthela', 29, 53, 'F', 'judo'], ['harry', 18, 72, 'M', 'karate'], ['irving', 24, 61, 'M', 'karate'], ['jerry', 21, 56, 'M', 'soccer'], ['john_2', 26, 69, 'M', 'futboll'], ['malina', 22, 53, 'F', 'soccer'] ], columns=['name', 'age', 'weight', 'sex', 'd_type']) # 构造第二个DataFrame df2 = pd.DataFrame([ ['futboll', 'high', 'federal'], ['soccer', 'medium', 'state'], ['judo', 'medium', 'federal'], ['karate', 'high', 'federal'] ], columns=['d_type', 'impact', 'founds_in'])
2. 执行合并操作
两个表的公共关联键是d_type字段,直接用merge方法关联即可:
# 默认内连接,仅保留两个表d_type匹配的行,完全符合你的需求 result_df = pd.merge(df1, df2, on='d_type') # 如果需要保留df1的所有行,即使d_type在df2中无匹配,可以改用左连接: # result_df = pd.merge(df1, df2, on='d_type', how='left')
3. 合并结果验证
最终得到的result_df就会包含你需要的所有字段:name、age、weight、sex、d_type、impact、founds_in,和预期结构完全一致。
常见疑问解答
- 要不要写循环实现?
完全不需要,pandas的merge是基于底层优化实现的算子,性能比手动写Python循环高几个数量级,数据量越大优势越明显。 - 要不要切换到Linux环境操作?
不需要,pandas是跨平台工具包,Windows、macOS、Linux上的运行逻辑和输出结果完全一致,没有平台差异。
内容的提问来源于stack exchange,提问作者Hctor Alessandro Lpez Hernndez
相关产品推荐
相关产品推荐

