2014-05-21 2 views
0

내가 시간이 dataframes을 병합하려는 index.searchsorted 사용 dataframe, 대신에 정확하게 병합의 나는 최대 (시간 1)을 좀하고 싶습니다 나는 기본적으로 DF2하는 dataframe을 찾고 싶은이 예에서병합 팬더

import pandas as pd 

d1 = {'time' :pd.Series([100., 200., 300.]),'val1' : pd.Series([10., 20., 30.])} 
df1 = pd.DataFrame(d1) 
df1 = df1.set_index(['time']) 

d2 = {'time' :pd.Series([150., 170., 305., 400.]),'val2' : pd.Series([1., 2., 3., 4.])} 
df2 = pd.DataFrame(d2) 
df2 = df2.set_index(['time']) 

: 가장 좋은 방법은이 일을하지만 난 꽤 병합 예를 들어

작동하도록하는 방법을 알아낼 수 없습니다 하지만 val1은 = [10, 10, 30 , 30].

df1.index.searchsorted(df2.index) 

위의 내용은 내가 원하는 색인을 반환하는 것으로 보이지만 여기에서 어디로 가야할 지 모르겠습니다. 도움이 많이 감사!

나는 다음은 올바른 항목을 반환 기대했던,하지만 경계 오류 중 인덱스

df1.ix(df1.index[df1.index.searchsorted(df2.index)]) 

답변

3

사용 reindex 있습니다

import pandas as pd 

d1 = {'time' :pd.Series([100., 200., 300.]),'val1' : pd.Series([10., 20., 30.])} 
df1 = pd.DataFrame(d1) 
df1 = df1.set_index(['time']) 

d2 = {'time' :pd.Series([150., 170., 305., 400.]),'val2' : pd.Series([1., 2., 3., 4.])} 
df2 = pd.DataFrame(d2) 
df2 = df2.set_index(['time']) 

df1.reindex(df2.index, method="ffill") 

출력 :

 val1 
time  
150  10 
170  10 
305  30 
400  30 
관련 문제