熊猫:以编程方式选择多个列

时间:2016-05-12 05:51:43

标签: python pandas

现在,我选择多行,其中某些列具有这种特定值:

df.loc[(df['col1'] == val1) & (df['col2'] == val2)]

我是否可以通过编程方式执行此操作,我将列键/值作为dict提供?像这样:

def get_df(cols)

   df.loc[ (df[k] == v) for k,v in cols.items() ]

但我不确定如何'和'表达。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以从字典中创建一个系列并进行比较:

import numpy as np
import pandas as pd
np.random.seed(0)

df = pd.DataFrame(np.random.randint(0, 5, (100, 3)), columns = list("ABC"))
cols = {"A": 0, "B": 3, "C": 3}

df[(df == pd.Series(cols)).all(axis=1)]
Out: 
    A  B  C
94  0  3  3

或者,np.logical_and使用reduce

df[np.logical_and.reduce([(df[k] == v) for k,v in cols.items()])]

    A  B  C
94  0  3  3