现在,我选择多行,其中某些列具有这种特定值:
df.loc[(df['col1'] == val1) & (df['col2'] == val2)]
我是否可以通过编程方式执行此操作,我将列键/值作为dict提供?像这样:
def get_df(cols)
df.loc[ (df[k] == v) for k,v in cols.items() ]
但我不确定如何'和'表达。有什么想法吗?
答案 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