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

如何在Pandas中实现不新增列的外连接,仅添加新日期数据

解决方案:保留原有数据,仅追加新日期的行

我明白你的需求啦——你想保留第一个DataFrame里的所有原有数据,只把第二个DataFrame中全新的日期(也就是第一个里没有的那些)对应的value加进去,完全忽略掉两个DataFrame中重复日期的行(哪怕它们的value有细微差异)。之前用外连接出问题很正常,因为外连接会保留两边所有的行,包括重复日期的条目,这显然不是你想要的。

步骤1:构造示例数据

先把你给出的两个DataFrame用代码还原出来:

import pandas as pd

# 第一个DataFrame
df1 = pd.DataFrame({
    'date': [20100101, 20100102],
    'value': [100, 150]
})

# 第二个DataFrame
df2 = pd.DataFrame({
    'date': [20100102, 20100103],
    'value': [150.01, 180]
})

步骤2:筛选第二个DataFrame中的新日期行

我们需要找出df2里那些date没有出现在df1中的行,这一步可以用isin()方法配合取反操作~来实现:

# 筛选df2中不在df1日期列表里的行
new_rows = df2[~df2['date'].isin(df1['date'])]

这行代码会得到df2中日期为20100103的那一行,也就是我们需要追加的新数据。

步骤3:合并数据并整理结果

把df1和筛选出来的new_rows合并,然后按日期排序、重置索引就得到你想要的结果了:

# 合并两个数据集
result = pd.concat([df1, new_rows])
# 按日期排序并重置索引
result = result.sort_values('date').reset_index(drop=True)

最终输出结果

运行上面的代码后,result的内容就是:

date  value
0  20100101  100.0
1  20100102  150.0
2  20100103  180.0

这个方法完美满足你的需求:既保留了df1的所有原有数据,又只追加了df2中的新日期条目,完全忽略了重复日期的差异值。

内容的提问来源于stack exchange,提问作者Kevin Fang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:35:46