在字典中访问熊猫面具

时间:2019-06-05 08:27:55

标签: python pandas

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

这是一个简短的可复制示例:

import { Routes, RouterModule } from '@angular/router';

const routes: Routes = []; // Define your route

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})

我想做类似的事情:

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)"}

但是由于掩码是字符串,所以会出现错误

df[masks['young_weak']]

3 个答案:

答案 0 :(得分:4)

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

assoc-in

答案 1 :(得分:0)

另一种方法是将掩码设置为函数(lambda表达式)而不是字符串。这有效:

masks = {'old_strong' : lambda row: (row['age'] >18) & (row['strength'] >5),
    'young_weak' :  lambda row: (row['age'] <18) & (row['strength'] <5)}
df[masks['young_weak']]

答案 2 :(得分:0)

虽然不安全的解决方案是非常不好的做法,但是解决该问题的唯一方法是使用eval

print(df[eval(masks['young_weak'])])

输出:

   age  strength
0   10         0

这是link不好的原因。