2016-01-17 1 views
3

У меня есть 2 панд Series (х и у) с некоторыми значениями времени в общемфильтр из серии взятия пересекающего индекса по отношению к другой серии

Тогда мне нужно отфильтровать одну из них, беря только значения, индексы которых являются общими.

Пусть скажем ряд х

2010-01-27 16:00:00 2.0 
2010-01-27 16:10:00 2.2 
2010-01-27 16:30:00 1.7 

и еще у

2010-01-27 15:50:00 5.0 
2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:20:00 4.2 
2010-01-27 16:30:00 1.9 

Я хочу, чтобы фильтровать у путем сравнения соответствующих показателей х и у ряда

Результат для г должно быть примерно

2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:30:00 1.9 

Я попытался с помощью простого

y[y.index.get_values()==x.index.get_values()] 

но не производит выход серии. Есть ли что-то похожее на merge в Dataframes на Series?

Я не хочу, чтобы объединить оба Series в dataframe просто сравнить их и принять индекс общих данных значений

ответ

2

Вы можете использовать concat и get_duplicates:

s = pd.concat([s1, s2], axis=0).sort_index() 
print s 

2010-01-27 15:50:00 5.0 
2010-01-27 16:00:00 2.0 
2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 2.2 
2010-01-27 16:10:00 3.2 
2010-01-27 16:20:00 4.2 
2010-01-27 16:30:00 1.7 
2010-01-27 16:30:00 1.9 

print s2[s.index.get_duplicates()] 

2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:30:00 1.9 
Name: 1, dtype: float64 

Или используйте duplicated:

print s2[s.index[s.index.duplicated()]] 

2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:30:00 1.9 
Name: 1, dtype: float64 

Но лучшее reindex или reindex_like:

print s2.reindex(s1.index) 

2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:30:00 1.9 
Name: 1, dtype: float64 

print s2.reindex_like(s1) 

2010-01-27 16:00:00 2.8 
2010-01-27 16:10:00 3.2 
2010-01-27 16:30:00 1.9 
Name: 1, dtype: float64 
+0

К сожалению, я проверил ваши старые вопросы и ответ не был [принят] (http://meta.stackexchange.com/questions/5234/how-does-accepting- ан-ответ-работа). Возможно, вы можете проверить [тур], а затем принять их, если они будут работать. Спасибо. – jezrael