python - 如何使用python在数据框中查找带有空格的行?
问题描述
我有以下数据框。
import pandas as pd
import numpy as np
#Create a DataFrame
df1 = {
'State':[' Arizona AZ ',' Georgia GG ', ' Newyork NY','Indiana IN ','Florida FL '],
'Score1':[62,47,55,74,31],
'Score2':[332,'',35,73,61]}
df1 = pd.DataFrame(df1,columns=['State','Score1','Score2'])
print(df1)
它返回
State Score1 Score2
0 Arizona AZ 62 62
1 Georgia GG 47
2 Newyork NY 55 35
3 Indiana IN 74 73
4 Florida FL 31 61
现在,如果我对 Score1 和 Score2 都有值,我想添加另一列来判断“通过”,当一个为空白时判断“失败”。
我认为波纹管做的工作,但没有。
df1['pass/fail'] = np.where((df1['Score1'].isspace()) | (df1['Score2'].isspace()) , 'fail',' ')
如何添加一列以查看我是否有两列的数据?
编辑:我的数据集实际上看起来像这样
import pandas as pd
import numpy as np
#Create a DataFrame
df1 = {
'State':[' Arizona AZ ',' Georgia GG ', ' Newyork NY','Indiana IN ','Florida FL '],
'Score1':[62,47,55,nan,31],
'Score2':[332,'',35,73,61]}
df1 = pd.DataFrame(df1,columns=['State','Score1','Score2'])
print(df1)
'nan' 和 ' ' 都必须返回失败。
解决方案
将它们转换为字符串,astype(str)
然后使用.str.fullmatch
正则表达式\s*
检查条目是否为空(空格)或充满空格,''
例如' '
:
df1['pass/fail'] = np.where(
(df1['Score1'].astype(str).str.fullmatch(r"\s*") |
df1['Score2'].astype(str).str.fullmatch(r"\s*")),
'fail',
'pass')
要得到
State Score1 Score2 pass/fail
0 Arizona AZ 62 332 pass
1 Georgia GG 47 fail
2 Newyork NY 55 35 pass
3 Indiana IN 74 73 pass
4 Florida FL 31 61 pass
如果你想避免在那里重复,你可以将掩码包装在一个函数中:
def is_blank_mask(df, column):
return df[column].astype(str).str.fullmatch(r"\s*")
接着
df1['pass/fail'] = np.where(is_blank_mask(df1, 'Score1') | is_blank_mask(df1, 'Score2'),
'fail',
'pass')
推荐阅读
- amazon-web-services - 使用 Boto3 客户端与资源时的约定是什么?
- javascript - 机器人回答后删除调用者消息
- python - 如何在 1000 个假服务器上模拟 HTTP GET 请求?
- javascript - 根据Javascript中的列表从Json中提取字段
- r - 将列表中的数据框绑定到列表中的所有其他数据框
- html - 为什么和之间有既不是边距也不是填充的空间
元素?
- swift - 为什么 Swift 不能从 CLI 运行?
- javascript - 使用 node-fetch 从指定站点检索数据
- python - 读取包含选项卡的行
- python - 如何知道scrapy规则提取了哪些链接