5

3次スプラインを使用してDataFrameの列のギャップを埋めたいと思います。リストにエクスポートする場合は、numpyのinterp1d関数を使用して、不足している値にこれを適用できます。

パンダ内でこの関数を使用する方法はありますか?

4

1 に答える 1

7

ほとんどの numpy/scipy 関数は、引数が「array_like」であることのみを必要とし、iterp1d例外ではありません。幸い、Series と DataFrame はどちらも「array_like」であるため、パンダを離れる必要はありません。

import pandas as pd
import numpy as np
from scipy.interpolate import interp1d

df = pd.DataFrame([np.arange(1, 6), [1, 8, 27, np.nan, 125]]).T

In [5]: df
Out[5]: 
   0    1
0  1    1
1  2    8
2  3   27
3  4  NaN
4  5  125

df2 = df.dropna() # interpolate on the non nan
f = interp1d(df2[0], df2[1], kind='cubic')
#f(4) == array(63.9999999999992)

df[1] = df[0].apply(f)

In [10]: df
Out[10]: 
   0    1
0  1    1
1  2    8
2  3   27
3  4   64
4  5  125

注: DataFrame を 2 番目の引数 ( ) に渡す例が思い浮かびませんでしたyが、これも機能するはずです。

于 2012-12-18T11:23:12.857 に答える