如何根据字典过滤多列上的pandas数据帧?

时间:2016-01-22 15:26:19

标签: python pandas

我有3个词典: A,B,C

以及包含以下列的pandas数据框:

['id',
 't1',
 't2',
 't3',
 't4']

现在我要做的只是保留那些t1存在于dict A中的行,t2存在于dict B中,而t3存在于dict C中

我在A中尝试过数据帧[' t1'] 这给出了一个错误:Series对象是可变的,不能被散列...

1 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情。

df.loc[(df['t1'].isin(A.keys()) & df['t2'].isin(B.keys()) & df['t3'].isin(C.keys()))]

我希望这就是你想要的。

In [51]: df
Out[51]: 
   t1  t2  t3  t4  max_value
0   1   4   5   2          5
1  34  70   1   5         70
2  43  89   4  11         89
3  22  76   4   3         76

In [52]: A = {34: 4}

In [53]: B = {70: 5, 89: 3}

In [54]: C = {1: 3, 5:1}

In [55]: df.loc[(df['t1'].isin(A.keys()) & df['t2'].isin(B.keys()) & df['t3'].isin(C.keys()))]
Out[55]: 
   t1  t2  t3  t4  max_value
1  34  70   1   5         70

要回答@EdChum,我假设OP想要检查字典键中是否存在值。