在数据框中过滤具有相同值的列-Python

时间:2019-03-25 08:56:16

标签: python python-3.x pandas validation dataframe

我正在尝试为数据框中的所有列过滤相同的值:

这是我的数据框:

df=pd.DataFrame({'A':['valid','invalid','valid'],'B':['valid','valid','valid'],'C':['valid','invalid','invalid']})

我只需要只有“有效”值的记录

我尝试过的是:

udf=(lambda x: x=='valid')
df1=df.applymap(udf)
df1

       A     B      C
0   True  True   True
1  False  True  False
2   True  True  False
再次

我不知道必须过滤仅包含True的记录。我该怎么做?

Actual df output
         A      B        C
0    valid  valid    valid
1  invalid  valid  invalid
2    valid  valid  invalid

Expected ouput
       A     B      C
0   valid  valid    valid

有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

DataFrame.eq比较所有值,并以DataFrame.all得到具有所有值True s的行:

df1 = df[df.eq('valid').all(axis=1)]
#same like
#df1 = df[(df == 'valid').all(axis=1)]
print (df1) 
       A      B      C
0  valid  valid  valid

详细信息

print (df.eq('valid')) 
       A     B      C
0   True  True   True
1  False  True  False
2   True  True  False

print (df.eq('valid').all(axis=1))
0     True
1    False
2    False
dtype: bool