通过映射或遮罩根据字典更改熊猫数据框值

时间:2020-03-22 14:32:46

标签: python pandas dataframe

是否可以使用字典或映射来替换值? 我有这样的数据框:df

registerOnTouched() {
    console.log('registerOnTouched called');
  }

  setDisabledState(isDisabled: boolean): void {
    console.log('set disabled called with value ',isDisabled);
    this.editor.setReadOnly(isDisabled);
  }

,我还有另一个数据框,提供了品牌代码。当然,该df也可以更改为字典。 df1

Q14r63: Audi                 Q14r2: BMW                 Q14r1: VW 

Selected                     Not Selected               Not Selected
Not Selected                 Selected                   Selected 
Selected                     Selected                   Not Selected 

有什么方法可以通过汽车品牌更改主df中“选定”值的输出吗?

所需的输出

Brand           Code
Audi             63
BMW              2
VW               1

到目前为止,我尝试过的操作:

Q14r63: Audi               Q14r2: BMW                 Q14r1: VW 

Audi                         NaN                       NaN 
NaN                          BMW                       VW 
Audi                         BMW                       NaN

但是我遇到错误v = df.columns.str.extract('(' + '|'.join(df1['Brand']) + ')', expand=False) m = df.eq('Selected') df = df.mask(m, v[None, :]).where(m)

对于一个数据框而言,它可以正常工作,但其他类似的数据框却出现上述错误

1 个答案:

答案 0 :(得分:1)

我认为列中有一些特殊的正则表达式字符,因此请转义它们:

这意味着改变:

v = df.columns.str.extract('(' + '|'.join(df1['Brand']) + ')', expand=False)

收件人:

import re
v = df.columns.str.extract('(' + '|'.join(re.escape(x) for x in df1['Brand']) + ')', expand=False)