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

有了這些系列,我可以用s1的索引單獨找到s2的最接近的索引值。例如:最近值迭代

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

返回1,因爲11,S1的第一個指數是最接近10

似乎我無法弄清楚如何創建具有S1一個數據幀,並且這些值迭代,而不使用我曾經教過的for循環在熊貓中是不實用的。

所以期望的結果是一個數據幀,其中s1的值在一列中,另一個使用上面的代碼具有s2的值。

+0

你應該以root的答案去。如果你仍然對如何矢量化代碼感到好奇,你可以像'df ['s2_nearest'] = s1.index'然後'df ['s2_nearest']。map(lambda i:s2.values [np.abs(s2.index - i).argmin()])' –

回答

2

如果我理解正確的,我想你想在s2使用reindexmethod='nearest'

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