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

基于stage='done'条件从另一DataFrame为目标DataFrame添加多列并赋值

Pandas 数据匹配与填充实现方案

原始数据

df1

import pandas as pd

df1 = pd.DataFrame({
    'Instance_name': ['A', 'A', 'B', 'B', 'C', 'C'],
    'counter_name': ['bytes_read', 'bytes_written', 'bytes_read', 'bytes_Written', 'bytes_read', 'bytes_Written'],
    'counter_value': [0, 90, 100, 90, 100, 90]
})

df2

df2 = pd.DataFrame({
    'load': [0, 0, 0, 1, 1, 1, 2, 2, 2],
    'instance_name': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
    'blks_comp': [0, 10, 10, 10, 910, 980, 910, 710, 910],
    'blks_sort': [50, 50, 50, 50, 950, 950, 980, 980, 980],
    'blks_dirty': [90, 90, 90, 100, 9100, 9100, 9100, 8100, 9100],
    'stage': ['sort', 'sort', 'comp', 'comp', 'comp', 'done', 'comp', 'done', 'ready']
})

需求

  • 筛选df2中stage等于'done'的行
  • 依据instance_name(注意df1列名为Instance_name,需统一大小写)与df1匹配,为df1新增blks_comp、blks_sort、blks_dirty三列
  • 若某Instance_name在df2中无stage='done'的记录,新增列对应值填充为0

实现代码

# 提取df2中stage为done的行,仅保留需要的列
df2_done = df2[df2['stage'] == 'done'][['instance_name', 'blks_comp', 'blks_sort', 'blks_dirty']]

# 统一列名,避免大小写导致匹配失败
df2_done.rename(columns={'instance_name': 'Instance_name'}, inplace=True)

# 左连接合并两个DataFrame,缺失值填充为0
df3 = df1.merge(df2_done, on='Instance_name', how='left').fillna(0)

# 将填充后的浮点型数值转为整数
df3[['blks_comp', 'blks_sort', 'blks_dirty']] = df3[['blks_comp', 'blks_sort', 'blks_dirty']].astype(int)

# 输出结果
print(df3)

最终输出

Instance_name counter_name  counter_value  blks_comp  blks_sort  blks_dirty
0             A    bytes_read              0          0          0           0
1             A bytes_written             90          0          0           0
2             B    bytes_read            100        710        980        8100
3             B bytes_Written             90        710        980        8100
4             C    bytes_read            100        980        950        9100
5             C bytes_Written             90        980        950        9100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:40:08