我正在使用女子世界杯球员数据集学习熊猫。
我想在主数据帧的以下过滤器的结果上应用 .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)