如何将 .fillna() 应用于过滤后的数据帧?



我正在使用女子世界杯球员数据集学习熊猫。

我想在主数据帧的以下过滤器的结果上应用 .fillna((:

df[(df["pos"] == "GK") & (df["goals"].isnull())]

如何申请:

fillna(0, inplace=True)

在上面的过滤器中,在"目标"列上。

我确实使用了以下代码,但是当我应用它时,它会运行但似乎不起作用:

df.loc[df["pos"] == "GK"].loc[df["goals"].isnull()].loc[:,"goals"].fillna(0, inplace=True)

第一行选择索引,你知道列,所以只需使用一个loc就可以了:

df.loc[(df["pos"] == "GK") & (df["goals"].isnull()), 'goals'].fillna(0, inplace=True)

更新:

所以看起来熊猫会返回一份副本,而inplace在那里并没有真正做任何事情。但是,您不希望将其分配给所有数据帧。 由于您已经在过滤 nan 值,因此更简单的方法是直接分配值。df.loc[(df["pos"] == "GK") & (df["goals"].isnull()), 'goals'] = 0这在我的电脑上工作正常,希望它能解决您的问题。

df[(df["pos"] == "GK") & (df["goals"].isnull()), 'goals']=0

这将解决您的问题。

您已经使用布尔选择进行了屏蔽。所以就.fillna(0)

df[(df["pos"] == "GK") & (df["goals"].isnull())].fillna(0)

最新更新