Skip to main content
 首页 » 编程设计

python之遍历数据框中的行并根据其他列更改列的值

2025年05月04日16haluo1

假设我有一个名为 df 的数据框,如下所示:

Id      Place         
1        NY         
2       Berlin           
3       Paris         
4       Paris          
5       Berlin        

还有一个字典,它以 ID 作为键,以位置作为值,如下所示:

id_to_place = { 1 : "Berlin", 2: "Berlin", 3: "NY"} 

我想遍历数据帧的每一行,看看 ID 是否包含在 id_to_place 字典中。如果是这样,那么我想用字典值替换该行的 Place 列。例如,在运行代码后,我希望输出为:

Id      Place         
1       Berlin        
2       Berlin           
3       NY         
4       Paris          
5       Berlin        

到目前为止我已经尝试过这段代码:

id_to_place = { 1 : "Berlin", 2: "Berlin", 3: "NY"} 
 
for index,row in df.iterrows(): 
    id = row['id'] 
    place = row['place'] 
    for item in id_to_place: 
        if item == str(id): 
          df.loc[df.id =id,'place'] = id_to_place[item] 
 
print(df) 

但是当我运行代码时,数据框保持不变。有谁知道为什么会这样?感谢您的帮助!

请您参考如下方法:

使用Series.map用于替换匹配值,然后将 NaNs 替换为 Series.fillna 的原始列:

df['Place'] = df['Id'].map(id_to_place).fillna(df['Place']) 
print (df) 
   Id   Place 
0   1  Berlin 
1   2  Berlin 
2   3      NY 
3   4   Paris 
4   5  Berlin