【发布时间】:2020-10-04 18:28:54
【问题描述】:
想知道是否有人可以帮助我解决这个问题。我正在研究一个机器学习问题,我已将df1[Age] 列分类为df1[Age_group]。不幸的是,缺少数据,因此任何df[Age] 即NaN 都被归类为3。
目前3 的分类仅表示“缺少数据”,我想将其更新为有用的东西。我已经使用 scikit-learn 逻辑回归来猜测缺失的年龄组,它们现在存储在一个我称之为 missing_age_grps 的 Numpy 数组中。
显然我正在使用的数据集要大得多,但下面应该有足够的数据来说明问题。
在下面的示例中,missing_age_grps 是一个只有 2 个的数组,因为只有 2 个 df1[Age_group] == 3 实例
import pandas as pd
import numpy as np
d = {'ID': [0, 1, 2, 3, 4], 'Sex': ["Male","Female","Male","Male", "Female"], 'Age':[np.nan, 23, np.nan, 6, 15] , 'Age_group':[3,2,3,0,1]}
df1 = pd.Dataframe(d)
print(df1)
ID Sex Age Age_group
0 Male NaN 3
1 Female 23 2
2 Male NaN 3
3 Male 6 0
4 Female 15 1 /....
print(missing_age_grps)
[0, 1]
我无法仅重写df1['Age_group'] 中由3 表示的值。
理想的解决方案将仅使用 numpy 数组中的值更新 3。这是预期的输出:
print(df1)
ID Sex Age Age_group
0 Male NaN 0
1 Female 23 2
2 Male NaN 1
3 Male 6 0
4 Female 15 1 /....
【问题讨论】:
-
df1.loc[df1['Age'].isna(), 'Age_group'] = age_group