簡體   English   中英

如何替換所有字符串'? 用 0 浮點數?

[英]How to replace all strings '?' with a 0 float?

我目前正在清理一個數據框並且遇到了問題,因為它們都是 int 和 str 的混合體,但我正在嘗試將它們全部轉換為浮點數。 數據框是所有數字以及一些帶有“?”的條目我試圖用“0”浮點數替換的字符串。 我應該如何 go 這樣做呢?

    # Load the data from the file
    df = pd.read_csv('processed.state.csv')
    df.apply(pd.to_numeric) 

產生錯誤:無法解析字符串“?” 在 position 165

df = pd.DataFrame([1,23,'1','2', "?"])
df.replace('?', 0).apply(pd.to_numeric)

將非數字替換為 0 的更通用的解決方案是

def fun(x):
  try:
    return float(x)
  except ValueError:
    return 0

df = pd.DataFrame({'c1': [1,23,'1','2', "?"], 'c2': [1,23,'abc','2', "?"]})

df.applymap(fun)

您可以創建自己的 function:

def to_float(item):
    try:
        return float(item)
    except ValueError:
        return 0

並將其應用於 DataFrame。

您可以使用pandas.DataFrame.replace

df = pd.read_csv('processed.state.csv' encoding = 'utf-8')
df.replace('?', 0)
df.apply(pd.to_numeric) 
df['col'] = df['col'].map(lambda x: 0.0 if x == '?' else x).astype(np.float64)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM