我有一个像这样的数据框。
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列中的任何值包含一个+ True,则新列将为True,否则为False
对于这种情况,我想要的结果是 [True,False,False,False,True]
对不起,我是熊猫的新手,我想知道熊猫是否提供了一种有效的方法。
答案 0 :(得分:2)
这将一劳永逸:
(df == "B.Tech").sum(axis=1).astype(bool)
说明:
df == "B.Tech"
返回一个与原始形状相同的DataFrame,但只包含True / False值(该值是否等于“ B.Tech”)
.sum(axis=1)
按行对布尔值求和,将True解释为1,将False解释为0。
.astype(bool)
将总和的结果转换回布尔值,其中大于0的值变为True,而0则变为False。
或者如Ch3steR所指出的,您可以用any替换最后一部分,如:
(df == "B.Tech").any(axis=1)