【问题标题】:TypeError when conditionally replacing values in a dataframe column有条件地替换数据框列中的值时出现类型错误
【发布时间】:2022-01-24 20:17:04
【问题描述】:

我有一个数据框列,其中列出了特定房产建造年份的信息。 该值可以是:一年、未知或新建。 我想用当前年份替换所有“新建”值,保持年份值不变,并用列的平均值替换所有“未知”值。这是我的代码:

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

不太清楚这里有什么问题。有什么想法吗?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您应该能够通过以下方式做到这一点。

    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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 2020-03-14
      • 2020-03-24
      • 1970-01-01
      相关资源
      最近更新 更多