我有两个数据帧DfMaster
和DfError
DfMaster
如下:
Id Name Building
0 4653 Jane Smith A
1 3467 Steve Jones B
2 34 Kim Lee F
3 4567 John Evans A
4 3643 Kevin Franks S
5 244 Stella Howard D
和DfError
看起来
Id Name Building
0 4567 John Evans A
1 244 Stella Howard D
在DfMaster
中,如果记录的Building
值出现在DD
数据框中,则要将其更改为DfError
。所以我想要的输出是:
Id Name Building
0 4653 Jane Smith A
1 3467 Steve Jones B
2 34 Kim Lee F
3 4567 John Evans DD
4 3643 Kevin Franks S
5 244 Stella Howard DD
我正在尝试使用以下内容:
DfMaster.loc[DfError['Id'], 'Building'] = 'DD'
但是我得到一个错误:
KeyError: "None of [Int64Index([4567,244], dtype='int64')] are in the [index]"
请让我知道我做错了什么
谢谢
答案 0 :(得分:1)
使用np.where
import numpy as np
errors = list(dfError['id'].unqiue())
dfMaster['Building_id'] = np.where(dfMaster['Building_id'].isin(errors),'DD',dfMaster['Building_id'])
答案 1 :(得分:1)
DataFrame.loc
希望您输入索引或布尔序列,而不是列中的值。
我相信这应该可以解决问题:
DfMaster.loc[DfMaster['Id'].isin(DfError['Id']), 'Building'] = 'DD'
基本上,这是在说:
对于DfError['Id']
中存在ID值的所有行,将'Building'
的值设置为'DD'
。