pandas - All() 正在打印每次 else 语句
问题描述
基本上,熊猫对象不是单独应用于整个数据框,这就是它要else
调节的原因。我们需要在每一行上应用
我在一row
帧上应用时得到了正确的输出。在应用整个数据框时,我No keys
在每一行上都遇到了错误,基本上有些行res
只有None
那些行No keys
样本数据框
res,url1,url2
{'bool': True, 'val':False},{'bool': False, 'val':False},{'bool': True, 'val':False}
None,{'bool': True, 'val':False},{'bool': False, 'val':False}
{'bool': False, 'val':False},},{'bool': True, 'val':False},{'bool': True, 'val':False}
代码
def func1():
return ('url1')
def func2():
return ('url2')
def test_func():
if df['res'].str['bool'].all() and df['url1'].str['bool'].all():
return func1()
elif df['res'].str['bool'].all() and df['url2'].str['bool'].all():
return func2()
else:
return ("No Keys")
预计出局
output
url1
No Keys
url2
我的出去
No keys
No Keys
No Kyes
我需要在下面的代码上申请超过 5000 个网址
df['output'] = df.apply(test_func)
应用时出现错误 No keys on each rows
如果我any
通过它,False
因为布尔值的第一行url1
是False
问题是如果 all() 它检查所有行,因为 None 存在于第二行中,它的打印No Keys
解决方案
重新创建数据框
res url1 \
0 {'bool': True, 'val': False} {'bool': False, 'val': False}
1 None {'bool': True, 'val': False}
2 {'bool': False, 'val': False} {'bool': True, 'val': False}
url2
0 {'bool': True, 'val': False}
1 {'bool': False, 'val': False}
2 {'bool': True, 'val': False}
利用pd.apply
df.apply(lambda x: 'url1' if (x['res'] != None and x['res'].get('bool') and x['url1'].get('bool'))\
else 'url2' if (x['res'] != None and x['res'].get('bool') and x['url2'].get('bool'))
else 'No Keys',1)
Output
0 url2
1 No Keys
2 No Keys
dtype: object
注意- 对于第三行,res bool 值为 False,所以这样做and
会给出 false,因此No Keys
推荐阅读
- cordova - 尝试运行离子项目时出错
- rust - 在命令缓冲区执行之间清除非瞬态图像
- java - Spark 独立模式:有没有办法以编程方式从 Spark 的 localhost:8080 获取每个工作人员的核心/内存信息
- powershell - 记录 Powershell 模块:您应该对输出类型有多具体?
- c# - 如何强制实体框架允许数据库创建 GUID PK?
- python - 使用 Python 抓取返回变量值
- javascript - 为什么html看不到与其连接的js文件?
- twilio - 使用 Elastic SIP Trunking 时,即使未接听或未接听电话,Twilio 仍会收费吗?
- excel - 根据不同的“开始”和“结束”值过滤 Excel 中的日期
- python - aws Glue-JOB 的问题