python - 通过采用相对于其他系列的相交索引来过滤掉一个系列

标签 python pandas merge series

我有 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)数据索引值

最佳答案

您可以使用 concatget_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

但最好的是reindexreindex_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/

相关文章:

php - 合并 SQL 记录

python - 买卖股票动态规划的最佳时机

Windows 7 英特尔 64 位上的 Python

python - Pandas 键列表列和值列表列到字典列表列

python - 分割为 |并在 pandas 系列中找到独特的值(value)

javascript - 可以合并或嵌套 ES6 导入吗?

Mercurial merge - 自动 merge 某些冲突模式

python - 使用 Python 3.6 在运行时获取类的通用类型

python - 当通过子属性引用它们时,Django ORM 不会保存值

python - 重新排序数据框的列索引