gpt4 book ai didi

python - fillna() with map(dict) 不仅填充 NaN,还填充所有值

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:18 24 4
gpt4 key购买 nike

我有一个名为 data 的 DataFrame,其中包含一些列。其中之一是 Married,另一个是 Gender。这两个变量都是分类变量。

>>> print(data[['Gender', 'Married']].dtypes)
Gender category
Married category
dtype: object

Married 不包含 NaN 值,但是 Gender 包含 12 个 NaN 值,我想要的归咎于

>>> print(data['Gender'].isna().sum())
12

我做了快速分析,如果你有 Married='Yes',那么你更有可能有 Gender='Male'。所以我想以这种方式估算 Gender 值:

Married='Yes' ->  Gender='Male'
Married='No' -> Gender='Female'

所以我创建了一个字典:

dictionary = {'Yes': 'Male', 'No': 'Female'}

然后我根据fillna()写了一段简单的代码:

data['Gender'].fillna(data['Married'].map(dictionary), inplace=True)

而且它起作用了……以完全不同于预期的方式。它改变了整个 Gender 列!现在每个条目都基于 Married 列。看看这些交叉表:

在 fillna() 之前:

Married   No  Yes
Gender
Female 80 31
Male 129 352

在 fillna() 之后:

Married   No  Yes
Gender
Female 212 0
Male 0 392

如何根据 Married 列填充 NaN Gender 值?

最佳答案

您的代码看起来不错。如果它不起作用,则可能存在 Pandas 错误。您可以尝试使用 bool 索引代替 loc 赋值:

mask = df['Gender'].isnull()
df.loc[mask, 'Gender'] = df.loc[mask, 'Married'].map(dictionary)

关于python - fillna() with map(dict) 不仅填充 NaN,还填充所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54365286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com