通过映射或掩码基于字典更改数据帧值

2024-10-01 19:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有任何方法可以使用字典或映射替换值? 我有这样的数据帧:df

Q14r63: Audi                 Q14r2: BMW                 Q14r1: VW 

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

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

Brand           Code
Audi             63
BMW              2
VW               1

如果主df中的“选定”值可以随汽车品牌变化,是否有任何方法可以获得输出

所需输出

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)

但是我得到了错误ValueError: only one regex group is supported with Index

对于一个数据帧,其工作正常,但对于其他类似的数据帧,我发现上述错误


Tags: 数据方法df字典notnandf1vw
1条回答
网友
1楼 · 发布于 2024-10-01 19:27:52

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

这意味着改变:

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)

相关问题 更多 >

    热门问题