2016-07-28 10 views
1
s1 = pd.Series({11:100, 13:102, 17:99}) 
s2 = pd.Series({10:1, 14:2, 18:3}) 

これらのシリーズを持つと、s1のインデックスを使用して、s2の値を最も近いインデックスs2で見つけることができます。例:最も近い値の繰り返し

s2.values[np.abs(s2.index - s1.index[0]).argmin()]

戻り値1 11なぜなら、S1の最初のインデックスは、私は、S1を持つデータフレームを作成する方法をされて把握することができないよう何10

に最も近く、これらの値を繰り返します私が教えてきたforループを使わずに、パンダでは実用的ではありません。

所望の結果は、上記のコードを使用して、一つの列内のS1の値を持つデータフレーム及び他の有するS2の値です。私が正しく理解していれば

+0

をあなたがルートの答えで行く必要があります。ケースでは、コードをベクトル化する方法についてはまだ興味がある、しかし、あなたは 'DF [「s2_nearest」] = s1.index'のように気にいらを行うことができ、その後、' DF [「s2_nearest」]マップ(ラムダI:。s2.values [np.abs(s2.index-i).argmin()]) ' –

答えて

2

、私はあなたがmethod='nearest's2reindexを使用したいと思う:

s2 = s2.reindex(s1.index, method='nearest') 
df = pd.DataFrame({'s1': s1, 's2': s2}) 

結果の出力:

 s1 s2 
11 100 1 
13 102 2 
17 99 3 
関連する問題