【问题标题】:invalid type comparison with Booleans in Pandas与 Pandas 中的布尔值进行无效类型比较
【发布时间】:2019-06-28 20:54:40
【问题描述】:

尝试根据其他行级数据或具有类似数据的其他数据框清理 pandas 数据框(原点)中的 Country (Ctry) 列。请参阅示例数据框的链接。

它最终会在数据框中提供两个新列,给出格式正确的国家和数据质量“分数”。

Origin Dataframe Nafta, Countries, and States DataFrames

该函数适用于查找表中的值或空白,但是当我传入“坏”数据时,它会给出无效的类型比较。单独测试它会返回一个布尔值并且可以工作:

Nafta.loc[Nafta[col] == a].empty .

不知道为什么这不起作用。我已经测试了这些值,以及它的布尔值到布尔值。请参阅自定义函数和 lambda。

def CountryScore(a,b,c): 
    if pd.isnull(a):
        score = "blank"
        if pd.notnull(b):
            for col in States:
                if States.loc[States[col]== b].empty != True:
                    corfor = States.iloc[States.loc[States[col] == b].index[-1],2]
                    break
                else:
                    corfor = "Bad Data"
                    continue
        elif pd.notnull(c):
            if (len(str(c).strip()) <= 5) or (len(str(c).strip()) > 9):
                corfor = "USA"
            else:
                corfor = "CAN"
        else:
            corfor = "Bad Data"
    else:
        for col in Nafta:
            if Nafta.loc[Nafta[col] == a].empty != True:
                score = "good" 
                corfor = Nafta.iloc[Nafta.loc[Nafta[col] == a].index[-1],1]
                break
            else:
                score = "pending"
                continue
    if  "pending" == score:
        for col in Country:
            if Country.loc[Country[col]== a].empty != True:
                score = "good"
                corfor = Country.iloc[Country.loc[Country[col] == a].index[-1],2]
                break
            else:
                score = "bad"
                corfor = "Bad Data"
                continue
    return score, corfor

origin["Origin Ctry Score"] , origin["Origin Ctry Format"] = zip(*origin.apply(lambda x: CountryScore(x["Origin Ctry"], x["Origin State"], x["Origin Zip"]), axis = 1))

假设数据帧已经加载。谢谢!!!

【问题讨论】:

    标签: python python-3.x pandas numpy type-conversion


    【解决方案1】:

    我能够找到我的错误。在 Country 的最后一列中,我将整数与字符串进行比较。与布尔无关。修正:

    Country.loc[Country[col].astype(str)== a].empty != True
    

    我将在这种类型的转换中结束大部分内容。

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      相关资源
      最近更新 更多