通过定位索引并替换为列的模式,根据条件替换 Pandas 数据框中的数据

数据挖掘 Python 熊猫 数据框
2022-02-27 16:32:16

希望您不介意我在这里而不是常规的堆栈交换论坛发布问题。我正在学习 ML 基础知识并练习 pandas。

假设数据框叫df,列名=列名

假设我想替换“列名”列中的一些“脏”值。此列中有“未知”值没有任何意义,所以我想用模式替换它们。

df['columnname'].mode()

返回

0   dog
dtype: object

下面的代码将“未知”值替换为 NaN 而不是模式。

df.loc[df.index[df['columnname'] == "not known"].tolist(),'columnname'] = df['columnname'].mode()

我错过了什么?或者我应该如何修复代码?

2个回答

您的整个代码都是正确的,除了在您等同于df['columnname'].mode(). 这里的值应该有一个 dtype int 或 string 但这有一个 dtype 对象。只需将其替换df['columnname'].mode().values为即可。

另外,我看到很多这里不需要的东西。由于您使用的是pd.loc,您可以简单地编写:

df.loc[df['columnname'] == "not known",'columnname'] = df['columnname'].mode().values

试试这个

df['columnname'].replace({'not known' : df['columnname'].mode().values} , inplace=True)

这是替换值的最直接和直观的方法,因为您已经知道“脏”值是什么。