在熊猫与布尔值无效的类型的比较

问题描述 投票:0回答:1

尝试基于其他行级数据,或其他dataframes类似数据清理在大熊猫数据帧(原产地)国家(CTRY)列。参见例如数据帧的链接。

它最终将饲料中的数据帧给予正确格式化的国家和数据质量“成绩”两个新列。

Origin Dataframe Nafta, Countries, and States DataFrames

该功能适用​​于那些在查询表中的值,或空白,但是当我通过“坏”的数据,它给出了一个无效的类型比较。该测试分别返回一个布尔值和作品:

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

不知道为什么,这是行不通的。我测试过的值,它的布尔值Boolan。见自定义函数和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))

假设dataframes已经加载。谢谢!!!

python python-3.x pandas numpy type-conversion
1个回答
0
投票

我能找到我的错误。在国家的最后一列,我比较一个整数字符串。事不关己布尔。修正了:

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

我将结束大部分包裹在这种类型的转换。

© www.soinside.com 2019 - 2024. All rights reserved.