在字典中访问熊猫面具

vle*_*tre 4 python pandas

我有一本字典,其中包含多个熊猫掩码作为特定数据帧的字符串,但我找不到使用这些掩码的方法。

这是一个简短的可重现示例:

df = pd.DataFrame({'age' : [10, 24, 35, 67], 'strength' : [0 , 3, 9, 4]})

masks = {'old_strong' : "(df['age'] >18) & (df['strength'] >5)",
        'young_weak' : "(df['age'] <18) & (df['strength'] <5)"}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

df[masks['young_weak']]
Run Code Online (Sandbox Code Playgroud)

但由于掩码是一个字符串,我收到错误

KeyError: "(df['age'] <18) & (df['strength] <5)"
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 6

DataFrame.query与更改后的字典一起使用:

masks = {'old_strong' : "(age >18) & (strength >5)",
        'young_weak' : "(age <18) & (strength <5)"}

print (df.query(masks['young_weak']))
   age  strength
0   10         0
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考......根据[文档](https://pandas.pydata.org/pandas-docs/stable/reference/api/,`.query` 只是在幕后使用 `pd.eval` pandas.DataFrame.query.html)... (3认同)
  • @U9-Forward - 是的,也许你可以改变你的答案,因为它是可能的,但强烈建议不要这样做。;) (2认同)