pandas - All() 每次 else 语句时都会打印

标签 pandas

基本上 pandas 对象应用于整个数据框而不是单独的 这就是为什么它会进入 else 条件。我们需要应用到每一行

我在一个框架上应用时得到了正确的输出。在应用整个数据帧时,我在每行上都收到错误No key,基本上res的某些行有None,只有那些行预计是没有 key

示例数据框

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)

在应用时,我收到错误“每行上没有键”

如果我执行any,它会传递False,因为url1 bool 值的第一行是False

问题是,如果 all() 检查所有行,因为第二行中不存在任何行,则其打印 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

关于pandas - All() 每次 else 语句时都会打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59470949/

相关文章:

python - 使用 pandas 列表中的项目名称

regex - 如何将 map 与具有正则表达式键的字典一起使用?

python - 使用日期时间的 pandas 数据帧中的部分 for 循环

python - 在 Pandas 中插入带有常量的列

python - 使用 Pandas 在同一图中绘制分组数据

python - pandas 取某些行的平均值,同时保持其他行不变

python - 在 Pandas 中自动创建 DataFrame

python - 使用 pandas 读取带有前导空格的文本文件给出一个 NaN 列

python - Pandas 中 Series.add 功能的更快替代品

python - 如何合并具有稍微不同的合并字段的 DataFrame