【问题标题】:'NAType' object has no attribute 'split''NAType' 对象没有属性 'split'
【发布时间】:2021-03-05 23:34:18
【问题描述】:

我已经搜索了整个 Stack Overflow,但还没有找到解决方案。

有没有办法检查变量/字符串是否为 NAType?

栏目:

DBRef('sector', 29)
DBRef('sector', 29)
DBRef('sector', 29)
DBRef('sector', 29)
DBRef('sector', 29)
DBRef('sector', 29)
<NA>

循环:

for q in list:
     b = q.split("'")[2]
     newcol.append(b)


错误:

AttributeError: 'NAType' object has no attribute 'split'

预期:

, 29)
, 29)
, 29)
, 29)
, 29)
, 29)
<NA>

我想拆分所有不是&lt;NA&gt; 的东西,如果是,那么它什么都不做。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    (只是因为你有pandas 标记),如果你的数据在一个系列/数据帧中,你可以使用str 方法这样做,它将处理缺失值:

    import pandas as pd
    import numpy as np
    
    s = pd.Series(["DBRef('sector', 29)"] * 5 + [np.nan])
    print(s.str.split("'").str[-1])
    

    输出:

    0    , 29)
    1    , 29)
    2    , 29)
    3    , 29)
    4    , 29)
    5      NaN
    dtype: object
    

    但我想如果你在你的循环中工作,你可以添加一个if 检查:

    import pandas as pd
    
    for q in list:
        if not pd.isna(q):
            b = q.split("'")[2]
            newcol.append(b)
    

    使用if pd.isna() 而不是简单的if,因为np.nantruthy

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2021-04-05
      • 2014-05-15
      • 2017-07-02
      • 2016-01-31
      • 2016-09-19
      • 2020-09-14
      • 2021-07-25
      • 2019-03-18
      相关资源
      最近更新 更多