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]。索引