【问题标题】:Pandas nan not treated as stringPandas nan 不被视为字符串
【发布时间】:2021-12-20 10:28:14
【问题描述】:

我有一个包含多个像这样的加密货币的 csv 文件。第 2 到 4 列是 id、symbol、name。

6201,nano-dogecoin,indc,Nano Dogecoin
6202,nano-shiba-inu,NanoShiba,Nano Shiba Inu
6203,nantrade,nan,NanTrade
6204,naos-finance,naos,NAOS Finance
6205,napoleon-x,npx,Napoleon X

我有一个函数,我可以通过这样的符号获取 id:

def symbols_to_ids(self, symbols):
    ids = []
    df = pd.read_csv(os.getcwd() + "/Backtester/Results/Misc/allcoins.csv")
    for index, row in df.iterrows():
        for symbol in symbols:
            
            if str(row["symbol"].lower()) == str(symbol.lower()):
                
                ids.append(row["id"])
    return ids

但是我得到一个错误,因为其中一个符号是 nan。我很确定它会被视为浮点数,因为当行符号为 nan 时会引发此错误:

  if str(row["symbol"].lower()) == str(symbol.lower()):
AttributeError: 'float' object has no attribute 'lower'

我尝试将其转换为字符串,但它不起作用。我认为这可以在 pandas 中解决,但我不知道如何。

【问题讨论】:

    标签: python pandas type-conversion


    【解决方案1】:

    您在转换之前调用了该方法。将.lower 移至外部转换:

    if str(row["symbol"]).lower() == str(symbol).lower():
    

    【讨论】:

    • 哈哈,谢谢,这是一个愚蠢的错误。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多