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

如何在Python的Pandas中按条件重新分配DataFrame指定值?

实现Pandas DataFrame值分配需求:将Company A的A1000值同步到同年份B2000

需求说明

要将2010-2013年间,Company A的A1000对应的values值,替换为该公司同年份B2000的values值。

实现方法

这里提供两种简洁的落地方式:

方法一:字典映射赋值

先提取符合条件的A1000值构建年份映射,再定位目标行完成更新:

import pandas as pd

# 生成示例DataFrame(修正原代码中"Comapny"的拼写错误为"Company")
df = pd.DataFrame({'Year': [2010, 2010,2010,2010,2010,2011,2011,2011,2012,2012,2012,2012,2012,2013,2013,2013,2014], 
                   'Company': ['A','A','A','B','B','A','B','C','A','B','B','B','C','A','B','C','D'],
                   'Code': ['A1000','B2000','C3000','A1000','B2000','B2000','B2000','B2000','A1000','A1000',
                   'B2000','C3000','A1000','B2000','C3000','A1000','A1000'], 
                   'values': [1000,2000,3000,500,1000,2000,4000,4000,1500,4000,2000,6000,1000,5000,2000,1500,2000]}
                  )

# 提取2010-2013年Company A的A1000值,构建「年份-对应值」的映射字典
a1000_map = df[(df['Company'] == 'A') & (df['Code'] == 'A1000') & (df['Year'].between(2010, 2013))].set_index('Year')['values'].to_dict()

# 定位需要更新的目标行,用年份映射替换values
update_mask = (df['Company'] == 'A') & (df['Code'] == 'B2000') & (df['Year'].between(2010, 2013))
df.loc[update_mask, 'values'] = df.loc[update_mask, 'Year'].map(a1000_map)

方法二:分组transform赋值

利用groupby和transform直接匹配同年份的A1000值,适合更复杂的分组场景:

# 筛选Company A且年份在2010-2013范围内的行
base_mask = (df['Company'] == 'A') & (df['Year'].between(2010, 2013))

# 对目标行赋值,自动匹配同年份的A1000值;若当年无A1000行则保留原值
df.loc[base_mask & (df['Code'] == 'B2000'), 'values'] = df[base_mask].groupby('Year')['values'].transform(
    lambda x: x[x.index.isin(df[base_mask & (df['Code'] == 'A1000')].index)].values[0] if len(x[x.index.isin(df[base_mask & (df['Code'] == 'A1000')].index)]) > 0 else x.iloc[0]
)

验证结果

执行代码后,可通过以下命令查看更新后的关键行:

print(df[(df['Company'] == 'A') & (df['Code'].isin(['A1000', 'B2000']))])

输出会显示:2010年B2000的values变为1000(对应同年A1000的值),2013年B2000的values变为1500(对应同年A1000的值);2011年因无A1000行,保持原values不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:23:08