Python如何按条件向DataFrame列中插入对应值?
解决方案
实现步骤:
- 为
df1中每个以"01"起始的分段分配唯一组ID - 建立组ID与
df2中对应值的映射关系 - 通过映射关系填充
df1的N2列
完整代码:
import pandas as pd # 输入数据 df1 = pd.DataFrame({ 'N1': ['01', '02','03','01','02','01','02','03','04'], 'N2':['', '','','','','','','','']}) df2 = pd.DataFrame({ 'N1': [ 'PALA A','PALA B','PALA C']}) # 生成分组标识:每遇到"01",组号递增1 df1['group_id'] = (df1['N1'] == '01').cumsum() # 创建组号到目标值的映射字典 group_to_value = dict(zip(range(1, len(df2)+1), df2['N1'])) # 映射填充N2列 df1['N2'] = df1['group_id'].map(group_to_value) # 移除临时分组列(可选) df1 = df1.drop('group_id', axis=1) # 输出结果 print(df1)
代码说明:
(df1['N1'] == '01').cumsum():生成累加序列,将连续的同分段行标记为同一组号,示例中生成[1,1,1,2,2,3,3,3,3]group_to_value:按顺序将组号1、2、3与df2的PALA A、PALA B、PALA C绑定map(group_to_value):直接将组号替换为对应文本,完成N2列的批量填充
执行后得到的结果与期望的result完全一致。
内容的提问来源于stack exchange,提问作者Valerie Oputin
相关产品推荐
相关产品推荐

