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

如何基于日期与Dump Number在Pandas DataFrame指定位置插入数据?

问题解答

背景

你拥有两个Pandas DataFrame:

  • set1:包含Date(格式为yyyy.doy)、Dump Number、VC5 Start字段,且预留了VC2 Start列
  • set2:包含Date、Dump Number和VC2 Start字段

需要将set2中的VC2 Start数据,依据Date和Dump Number匹配插入到set1对应行的VC2 Start列,此前尝试索引定位的代码失败,有两个疑问:

A. 如何根据set2的日期和Dump Number找到目标DataFrame的对应行?

可以用布尔索引精准定位匹配行,比如针对set2中的单一行,构造set1中双字段匹配的条件:

# 以set2的第i行为例
matched_rows = set1[(set1['Date'] == set2.loc[i, 'Date']) & (set1['Dump Number'] == set2.loc[i, 'Dump Number'])]

如果要批量处理所有行,更高效的方式是直接用pd.merge做关联——也就是你后来采用的方法,merge会自动根据指定的键匹配对应行。

B. 如何将VC2 Start数据插入该行对应列?

如果用布尔索引定位到目标行后,可通过.loc直接赋值:

# 将set2第i行的VC2 Start写入set1的对应行
set1.loc[(set1['Date'] == set2.loc[i, 'Date']) & (set1['Dump Number'] == set2.loc[i, 'Dump Number']), 'VC2 Start'] = set2.loc[i, 'VC2 Start']

但逐行处理效率偏低,更推荐你发现的pd.merge批量处理方案,一次性完成匹配与数据插入:

# 按Date和Dump Number合并,保留set1的所有行
merged_df = pd.merge(set1, set2, on=['Date', 'Dump Number'], how='left')
# 若merge后列名重复(如VC2 Start会生成VC2 Start_x、VC2 Start_y),可调整列名
merged_df['VC2 Start'] = merged_df.pop('VC2 Start_y')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:50:24