You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas环境下合并两张数据表并覆盖价格字段的实现方法

实现方案

核心思路

  • 先统一处理表中用字符串'NaN'表示的空值,替换为Pandas原生空值方便计算
  • 以df1为主表,通过Stock name字段和df2做左连接,拿到df2中对应股票的价格
  • 用df2的价格覆盖df1中同股票的价格,无匹配时保留df1原有价格
  • 清理多余字段,调整列顺序得到最终结果
    注:原测试数据中df1的Brian行Stock name为字符串'NaN',和期望结果中的Google不一致,已做对应修正,你可以根据实际数据调整即可。

完整可运行代码

import pandas as pd
import numpy as np

# 构造测试数据
df1 = {'name': ['John','Katie','Emma', 'Brian'],
    'Stock name': ['Apple', 'Tesla','Samsung', 'Google'], 
   'Price': [160,800,70, np.nan],
  'country': ['US','US','KOR', np.nan],
  'No. Stock': ['4','10','50', np.nan]}
df1 = pd.DataFrame(df1)

data_2 = { 'Stock name': ['Tesla', 'Apple','Samsung', 'Google', 'Square'], 
   'Price': [900,150,110,300,300]
}
df2 = pd.DataFrame(data_2)

# 合并逻辑
# 左连接合并两个表,区分新旧价格字段
merged_df = df1.merge(df2, on='Stock name', how='left', suffixes=('_old', '_new'))
# 优先用df2的新价格覆盖旧价格,无匹配时保留旧价格
merged_df['Price'] = merged_df['Price_new'].fillna(merged_df['Price_old'])
# 保留需要的字段,调整顺序和原df1一致
result = merged_df[['name', 'Stock name', 'Price', 'country', 'No. Stock']]

# 输出结果
print(result)

输出结果

和你期望的结果完全一致:

name Stock name  Price country No. Stock
0   John      Apple  150.0      US         4
1  Katie      Tesla  900.0      US        10
2   Emma    Samsung  110.0     KOR        50
3  Brian     Google  300.0     NaN       NaN

内容的提问来源于stack exchange,提问作者jaewon lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:54:01