假设我有一个名为 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
