python - 有没有办法根据单个值检查数据框?
问题描述
我有一个这样的数据框。
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 是否提供了一种有效的方法。
解决方案
这将一次性完成:
(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)
推荐阅读
- python - Python 音频:从信号中去除噪声
- angular - 如何将两个 ngFor 放在一个 div 中
- python - 如何在大数组上使用 np.unique?
- c# - 如何在 xamarin.forms 中使用 HttpClient 忽略自签名证书
- laravel - 不知道如何在vue中一次性节省价格
- java - JMSWMQ0018:无法使用连接模式连接到队列管理器
- php - 升级 laravel 到版本 8 时遗漏一些数据
- rust - 第一个可变借用应该超出范围,但编译器在同一范围内看到两个可变借用
- javascript - 使用 HTTP->HTTPS Apache 重定向时,Javascript `document.referrer` 消失
- typo3 - Fluid TYPO3:从其他页面获取通量变量