为什么我丢失的值会被不同于我想要的值所取代?python

为什么我丢失的值会被不同于我想要的值所取代?python,python,pandas,missing-data,Python,Pandas,Missing Data,我正在尝试替换数据帧中丢失的数据。 根据我的要求,部分数据已正确替换,但其余数据不起作用 例如,我想为我的['Gender']列填充缺少的数据。 我尝试了两种不同的方法: 使用模式替换 它适用于95%以上的缺失数据,但对于某些缺失数据,它将其替换为“0”,而不是模式(男性或女性) 所以我尝试了第二种方法,用随机替换 同样的问题,大约95%被正确替换,其余部分给出以下替换数据: 而不是男性或女性 有人知道为什么以及如何解决这个问题吗?如果因为通过索引而得到零,则应该写: for colu

我正在尝试替换数据帧中丢失的数据。 根据我的要求,部分数据已正确替换,但其余数据不起作用

例如,我想为我的['Gender']列填充缺少的数据。 我尝试了两种不同的方法:

  • 使用模式替换
它适用于95%以上的缺失数据,但对于某些缺失数据,它将其替换为“0”,而不是模式(男性或女性)

  • 所以我尝试了第二种方法,用随机替换
同样的问题,大约95%被正确替换,其余部分给出以下替换数据:

而不是男性或女性


有人知道为什么以及如何解决这个问题吗?

如果因为通过索引而得到零,则应该写:

for column in ['Gender']:
    df[column].fillna(df[column].mode()[0], inplace = True)

fillna
无法将函数作为参数谢谢,这确实解决了模式的问题。如果我想要随机数据,你知道我应该怎么做吗?为什么你想通过随机?这要复杂得多,因为我担心该模式可能会使数据向一个方向倾斜(特别是如果我丢失了很多数据),而random可能会为丢失的数据提供更同质的解决方案。在任何情况下,我都可以删除丢失数据的行,但这并不理想,因为它还将删除有用的数据。
df['Gender'].fillna(lambda x: random.choice(df[df[Gender] != np.nan]['Gender']), inplace =True)
for column in ['Gender']:
    df[column].fillna(df[column].mode()[0], inplace = True)