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
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 に答える
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

ただし、列ごとに適用を使用して新しいデータフレームを構築したいだけかもしれません。何かのようなもの

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 に答える