5

パンダで奇妙な問題が発生しています。複数の値を持つデータフレームがありNaNます。列平均を使用してこれらの値を埋めることができると思いましたNaN(つまり、すべてのNaN値をその列平均で埋めます)が、次のことを試してみると

  col_means = mydf.apply(np.mean, 0)
  mydf = mydf.fillna(value=col_means)

私はまだいくつかのNaN値を参照してください。なんで?

NaNのエントリよりも元のデータフレームに多くの値があるためcol_meansですか? そして、列ごとの塗りつぶしと行ごとの塗りつぶしの違いは正確には何ですか?

4

1 に答える 1

5

シリーズ(dictのようなもの)だけfillnaでできます:df.mean()

In [11]: df = pd.DataFrame([[1, np.nan], [np.nan, 4], [5, 6]])

In [12]: df
Out[12]:
    0   1
0   1 NaN
1 NaN   4
2   5   6

In [13]: df.fillna(df.mean())
Out[13]:
   0  1
0  1  5
1  3  4
2  5  6

注:これdf.mean()は行ごとの平均であり、塗りつぶし値を与えます:

In [14]: df.mean()
Out[14]:
0    3
1    5
dtype: float64

注:df.mean()いくつかの NaN 値がある場合、これらは DataFrame の fillna で使用されます。おそらく、fillnaこのシリーズでa を使用する必要があります。

df.mean().fillna(0)
df.fillna(df.mean().fillna(0))
于 2013-08-08T13:28:15.813 に答える