我如何选择行从熊猫df不返回False值?



我有一个df,我需要根据多个列中的一些条件选择行。

这是我的

import pandas as pd
dat = [('p','q', 5), ('k','j', 2), ('p','-', 5), ('-','p', 4), ('q','pkjq', 3), ('pkjq','q', 2)
df = pd.DataFrame(dat, columns = ['a', 'b', 'c'])
df_dat = df[(df[['a','b']].isin(['k','p','q','j']) & df['c'] > 3)] | df[(~df[['a','b']].isin(['k','p','q','j']) & df['c'] > 2 )]

预期结果=[("p","问",5),("p","-",5),(' - ',' p ', 4),(‘问’,‘pkjq’,3)]

我得到的结果是一个全假的数据帧

当您有我推荐的复杂条件时,将条件设置在切片之外

cond1 = df[['a','b']].isin(['k','p','q','j']).any(1) & df['c'].gt(3)
cond2 = (~df[['a','b']].isin(['k','p','q','j'])).any(1) & df['c'].gt(2)
out = df.loc[cond1 | cond2]
Out[305]: 
a     b  c
0  p     q  5
2  p     -  5
3  -     p  4
4  q  pkjq  3

相关内容

  • 没有找到相关文章

最新更新