我有一個資料框列,其中列出了特定屬性的建造年份的資訊。該值可以是:一年、未知或新建。我想用當前年份替換所有“新建”值,保持年份值不變,并用列的平均值替換所有“未知”值。這是我的代碼:
y = df['year'][pd.to_numeric(df['year'], errors='coerce').notnull()].astype(float).mean()
df['year'] = df.year.apply(lambda x: 2022 if fnmatch(x,'*ewly') else x)
df['year'] = df.year.apply(lambda x: y if fnmatch(x,'*nknown*') else x)
我使用 fnmatch 來搜索模式,因為它的拼寫方式各不相同。如果我在得到正確的輸出后運行 lambda 函式,但運行整個代碼會出現以下錯誤:
TypeError: expected str, bytes or os.PathLike object, not int
不太清楚這里有什么交易。有任何想法嗎?
uj5u.com熱心網友回復:
您應該能夠通過以下方式做到這一點。
df["year"] = df["year"].replace("newly built", "2022").str.extract('(\d )').fillna(-1).astype(int)
df["year"] = df["year"].replace(-1, df[df["year"]>0]["year"].mean())
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/420949.html
標籤:
