2017-01-27 11 views
1

Python Pandasでは、データフレームを対話的にいくつかのNaNの行と列で補間する必要がありますか? たとえば、次のデータフレーム -行と列の値を使用して欠損値を補間する

   90 92.5  95  100  110  120 
Index               
1   NaN NaN  NaN  NaN  NaN  NaN 
2  0.469690 NaN  NaN  NaN  NaN  NaN 
3  0.478220 NaN 0.492232 0.505685  NaN  NaN 
4  0.486377 NaN 0.503853 0.518890 0.550517  NaN 
5  0.485862 NaN 0.502130 0.515076 0.537675 0.564383 

私の目標は、可能であるものは何でもNaNを補間する、&が効率的にすべてのNaN、すなわちを埋める補間することです。しかし、私が使用している場合は、 "TypeError:すべてのNaNで補間できません"という結果が返されます。

df.interpolate(inplace=True, axis=0, method='spline', order=1, limit=20, limit_direction='both') 

+2

第二のカラムがNaNのいっぱいであるため。また、NaNでいっぱいの行があります。いくつかのアルゴリズムが問題になる可能性があります。 – keksnicoh

+0

'df.dtypes'が' float64'で 'object'ではないことを確認してください。補間方法は' NaNs 'で 'DF'とみなされます。後者の場合。 –

答えて

2

あなたは(@Boud for df.dropna(axis=1, how='all')ありがとう)、これを試すことができます。

多分
In [138]: new = df.dropna(axis=1, how='all').interpolate(limit=20, limit_direction='both') 

In [139]: new 
Out[139]: 
      90  95  100  110  120 
Index 
1  0.469690 0.492232 0.505685 0.550517 0.564383 
2  0.469690 0.492232 0.505685 0.550517 0.564383 
3  0.478220 0.492232 0.505685 0.550517 0.564383 
4  0.486377 0.503853 0.518890 0.550517 0.564383 
5  0.485862 0.502130 0.515076 0.537675 0.564383 
+1

同等ですがコンパクトなスタイル 'df.dropna(axis = 1、how = 'all')' – Boud

+0

@Boud、良い点、ありがとう!私は '.dropna()'について完全に忘れてしまったのですが...うん、今よりずっと良くなっています。 – MaxU

+0

@MaxUありがとうございますが、これを見ると、すべてのNaNフィールドで同じ値が得られます。補間を実際に行う方法があるかどうかは分かりますか?補間は数回行われなければならず、できるだけ可能な限り、すなわち最初の行で行5の列92.5を見つける必要があるたびに補間を行わなければならないと思う。 –