0

我对单个变量进行了修改并将其返回到同一个变量

X = pd.DataFrame(df, columns=['a'])
imp = Imputer(missing_values='NaN', strategy='median', axis=0)
X = imp.fit_transform(X)
df['a'] = X

但是我有很多变量&想像这样使用循环

f = df[[a, b, c, d, e]]
for k in f:
    X = pd.DataFrame(df, columns=k)
    imp = Imputer(missing_values='NaN', strategy='median', axis=0)
    X = imp.fit_transform(X)
    df.k = X

但:

TypeError: Index(...) must be called with a collection of some kind, 'a' was passed

如何在数据框中使用循环进行插补和返回变量?

4

2 回答 2

1

DataFrame 迭代它的列名,因此在这种情况下 k == 'a' 而不是第一列。你可以用

f = df[[a, b, c, d, e]]
for k in f:
    X = df[k]
    imp = Imputer(missing_values='NaN', strategy='median', axis=0)
    X = imp.fit_transform(X)
    df[k] = X

但是您可能只想使用 apply column wise 构建一个新的数据框。就像是

df = df.apply(imp.fit_transform, raw=True, broadcast=True)

或者熊猫有自己的方法来处理缺失的数据: http: //pandas.pydata.org/pandas-docs/stable/missing_data.html#filling-with-a-pandasobject

于 2016-07-25T18:16:33.423 回答
1
for k in f:
    X = pd.DataFrame(df, columns=[k])
    imp = Imputer(missing_values='NaN', strategy='median', axis=0)
    X = imp.fit_transform(X)
    df[k] = X
于 2016-07-25T18:43:55.117 回答