将数据帧与字典值列表进行比较

Ton*_*ony 2 python dictionary pandas

我有一个数据帧:

d = {'col1':['2q','48', '48-49']}
test = pd.DataFrame(d)


col1

0 2q
1 48 
2 48-49 
Run Code Online (Sandbox Code Playgroud)

以及用于映射的字典:

mupcs_to_pc_mapping = {'24': ['48-49', '48', '49'], #M2
                   '23': ['50-51', '50', '51'], #M3
                   '22': ['52-53', '52', '53'], #M4
                   '21': ['54-55', '54', '55'], #M5
                  }
Run Code Online (Sandbox Code Playgroud)

我想测试测试数据帧的每个值,看它是否存在于mupcs_to_pc_mapping dict值中.

所以最终结果如下:

0 False
1 True
2 True
Run Code Online (Sandbox Code Playgroud)

我试过了一个变种:

test['col1'].isin(mupcs_to_pc_mapping.values())
Run Code Online (Sandbox Code Playgroud)

test['col1'].any(value for value in mupcs_to_pc_mapping.values())
Run Code Online (Sandbox Code Playgroud)

但是它们都会导致错误.

有谁知道我的代码有什么问题?

Flo*_*oor 5

你也可以这样做:

test.isin(pd.DataFrame(mupcs_to_pc_mapping).stack().values)

   col1
0  False
1  True
2  True
Run Code Online (Sandbox Code Playgroud)