Python 有没有办法对照单个值检查数据帧?

Python 有没有办法对照单个值检查数据帧?,python,pandas,Python,Pandas,我有一个这样的数据帧 import pandas as pd import numpy as np # Creating a dict of lists data = {'Name':["Akash", "Geeku", "Pankaj", "Sumitra","Ramlal"], 'Branch':["B.Tech", np.nan, "

我有一个这样的数据帧

import pandas as pd 
import numpy as np
  
# Creating a dict of lists  
data = {'Name':["Akash", "Geeku", "Pankaj", "Sumitra","Ramlal"], 
       'Branch':["B.Tech", np.nan, "BCA", "B.Tech", "BCA"], 
       'Score':["80","90","60", "30", "B.Tech"], 
       'Result': ["Pass","Pass","Pass","Fail","Fail"]} 
  
# creating a dataframe  
df = pd.DataFrame(data)  
df 
df1:

然后,我想对照df中任何位置的'B.Tech'值检查数据帧。并返回一些类似下面这一个的df

df2:

然后我想得到一个列表,其中的值将基于前4个布尔值,例如,如果前4列中的任何值包含1+True,则新列将为True,否则为False

对于这种情况,我想要的结果是[真,假,假,假,真]


对不起,我是新来的熊猫,我想知道熊猫是否提供了一种有效的方法。这将一次性完成:

(df==“B.Tech”).sum(axis=1).aType(bool)

解释:

df==“B.Tech”
返回与原始数据帧形状相同的数据帧,但仅包含关于值是否等于“B.Tech”的真/假值

.sum(axis=1)
按行对布尔值求和,将True解释为1,将False解释为0

.astype(bool)
将求和结果转换回布尔值,大于0的值变为真,0变为假

更新: 或者,正如Ch3steR所指出的,您可以将最后一个零件替换为,如中所示:


(df==“B.Tech”)。任何(axis=1)
这将一次性完成:

(df==“B.Tech”).sum(axis=1).aType(bool)

解释:

df==“B.Tech”
返回与原始数据帧形状相同的数据帧,但仅包含关于值是否等于“B.Tech”的真/假值

.sum(axis=1)
按行对布尔值求和,将True解释为1,将False解释为0

.astype(bool)
将求和结果转换回布尔值,大于0的值变为真,0变为假

更新: 或者,正如Ch3steR所指出的,您可以将最后一个零件替换为,如中所示:


(df==“B.Tech”).any(axis=1)
.any(1)
而不是
.sum(axis=1).astype(book)
?解决方案返回pandas.Series,因此要获得结果为真的行号,可以执行以下操作:
s=(df==“B.Tech”).any(axis=1);s[s].index
.any(1)
而不是
.sum(axis=1)。astype(book)
?解决方案返回pandas.Series,因此要获得结果为真的行号,可以执行以下操作:
s=(df=“B.Tech”).any(axis=1);s[s]。索引