如何基于筛选条件将另一DataFrame的列值添加到目标DataFrame中
实现思路
- 首先确认
infra_df中Name值为net的行数和measures_df的行数完全一致(示例中均为4行,满足匹配要求) - 先给
infra_df初始化要新增的两个字段,默认值设为NaN - 筛选出
infra_df中所有Name为net的行的索引,按顺序将measures_df的对应值赋值到这些行的新增字段中
可运行代码示例
import pandas as pd import numpy as np # 构造示例infra_df infra_data = { 'Name': ['net', 'stat', 'net', 'net', 'sig', 'net'], 'time': ['8am'] * 6 } infra_df = pd.DataFrame(infra_data) # 构造示例measures_df measures_data = { 'tcp_time': [12, 22, 23, 34], 'tcp_wait': [33, 11, 32, 11] } measures_df = pd.DataFrame(measures_data) # 核心实现逻辑 # 1. 新增字段初始赋值为NaN infra_df[['tcp_time', 'tcp_wait']] = np.nan # 2. 筛选Name为net的行索引 net_row_indexes = infra_df[infra_df['Name'] == 'net'].index # 3. 按顺序赋值 infra_df.loc[net_row_indexes, ['tcp_time', 'tcp_wait']] = measures_df.values # 得到最终结果 result_df = infra_df
输出结果验证
运行代码后得到的result_df完全符合要求:
Name time tcp_time tcp_wait 0 net 8am 12.0 33.0 1 stat 8am NaN NaN 2 net 8am 22.0 11.0 3 net 8am 23.0 32.0 4 sig 8am NaN NaN 5 net 8am 34.0 11.0
内容的提问来源于stack exchange,提问作者nivedan gowda
相关产品推荐
相关产品推荐

