相关疑难解决方法(0)

使用dict中的值过滤pandas数据帧

我需要使用dict过滤数据框,使用键作为列名构造,值是我想要过滤的值:

filter_v = {'A':1, 'B':0, 'C':'This is right'}
# this would be the normal approach
df[(df['A'] == 1) & (df['B'] ==0)& (df['C'] == 'This is right')]
Run Code Online (Sandbox Code Playgroud)

但是我想做点什么

for column, value in filter_v.items():
    df[df[column] == value]
Run Code Online (Sandbox Code Playgroud)

但这会多次过滤数据框,一次过滤一个值,而不会同时应用所有过滤器.有没有办法以编程方式进行?

编辑:一个例子:

df1 = pd.DataFrame({'A':[1,0,1,1, np.nan], 'B':[1,1,1,0,1], 'C':['right','right','wrong','right', 'right'],'D':[1,2,2,3,4]})
filter_v = {'A':1, 'B':0, 'C':'right'}
df1.loc[df1[filter_v.keys()].isin(filter_v.values()).all(axis=1), :]
Run Code Online (Sandbox Code Playgroud)

    A   B   C   D
0   1   1   right   1
1   0   1   right   2
3   1   0   right   3
Run Code Online (Sandbox Code Playgroud)

但预期的结果是

    A   B   C   D
3   1   0   right …
Run Code Online (Sandbox Code Playgroud)

python pandas

24
推荐指数
2
解决办法
1万
查看次数

标签 统计

pandas ×1

python ×1