我有 2 个 pandas Series
(x 和 y)有一些共同的时间值
然后我需要通过仅获取日期索引相同的值来过滤掉其中之一。
假设一个系列x
2010-01-27 16:00:00 2.0
2010-01-27 16:10:00 2.2
2010-01-27 16:30:00 1.7
还有一个y
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
我想通过比较x和y系列各自的索引来过滤y
y 的结果应该是这样的
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()]
但不产生系列输出。在 Dataframes
中是否有类似 merge
的东西用于 Series
?
我不想将两个 Series
合并到一个数据框中,只是比较它们并采用公共(public)数据索引值
最佳答案
您可以使用 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
关于python - 通过采用相对于其他系列的相交索引来过滤掉一个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34842453/