首页 > 解决方案 > 有没有办法根据单个值检查数据框?

问题描述

我有一个这样的数据框。

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]

抱歉,我是 pandas 的新手,我想知道 Pandas 是否提供了一种有效的方法。

标签: pythonpandas

解决方案


这将一次性完成:

(df == "B.Tech").sum(axis=1).astype(bool)

解释:

df == "B.Tech"返回一个与原始形状相同的 DataFrame,但只包含关于该值是否等于“B.Tech”的 True/False 值

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

.astype(bool)将求和的结果转换回布尔值,其中大于 0 的值变为 True,而 0 变为 False。

更新:

或者,正如 Ch3steR 指出的那样,您可以用any替换最后一部分,如:

(df == "B.Tech").any(axis=1)


推荐阅读