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

基于DatetimeIndex与group列合并Pandas DataFrame并实现多国家重复匹配

解决方法

你的问题出在使用了how='inner'的连接方式,这会只保留两边DataFrame在日期索引+group上完全匹配的行,导致无匹配的2021-12-31行被过滤掉。只需修改连接方式为left,同时保留原有的连接键设置,就能实现需求:

result = pd.merge(df1, df2, how='left', left_index=True, right_index=True, on='group')

原理说明

  • how='left':以df1为基准,保留所有行,仅匹配df2中相同日期索引+group的num2值
  • left_index=True, right_index=True:将两边的DatetimeIndex作为连接键之一
  • on='group':同时将group列作为连接键,确保匹配是日期+分组的精准对应

示例验证

假设我们有以下样例数据:

df1

ctr group  num
2021-12-30 00:00:00  US     A    1
2021-12-30 00:00:00  CN     A    2
2021-12-31 00:00:00  US     B    3
2021-12-31 00:00:00  CN     B    4

df2

group  num2
2021-12-30 00:00:00     A     10

运行上述代码后得到的结果:

ctr group  num  num2
2021-12-30 00:00:00  US     A    1  10.0
2021-12-30 00:00:00  CN     A    2  10.0
2021-12-31 00:00:00  US     B    3   NaN
2021-12-31 00:00:00  CN     B    4   NaN

完全符合需求:每个国家对应分组和日期的num2被正确填充,无匹配的2021-12-31行num2留空(显示为NaN)。

内容的提问来源于stack exchange,提问作者Eric Fail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:40:21