pandas - 在 Pandas 中连接系列丢弃重叠索引

标签 pandas numpy dataframe series

假设我有以下三个具有重叠索引的系列

s1 = pd.Series(data=np.arange(5))
s2 = pd.Series(data=np.arange(5),index=np.arange(2,7))
s3 = pd.Series(data=np.arange(5),index=np.arange(5,10))

我希望将它们串联成一个系列;但是,我希望从具有“最新”索引的系列中获取重叠索引中的数据值。

因此在玩具箱中输出将是:

0    0
1    1
2    0
3    1
4    2
5    0
6    1
7    2
8    3
9    4
dtype: int32

这也可以看作是在每个系列与下一个系列重叠的地方切割每个系列,然后连接起来。当可能有很多系列的大长度时,有没有一种快速有效的方法可以在 pandas 中执行此操作。

编辑

我正在寻找一种高效的方法来执行此操作,因为实际上 Series 的长度和数量都很大,分别约为 100k 和 10k。

最佳答案

想法是使用 concatenate 来展平 Series 的索引和值,并按 Series.duplicated 过滤通过 ~ 反转掩码:

def new1(series):
    b = [x.index for x in series]
    v = np.concatenate(series)
    i = np.concatenate(b)

    mask = ~pd.Series(i).duplicated(keep='last')
    return pd.Series(v[mask], index=i[mask])

关于pandas - 在 Pandas 中连接系列丢弃重叠索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923937/

相关文章:

python - 如何在条件下计算 csv 文件中某个单词的出现次数?

python - 如何在 Windows 64 上安装 NumPy?

R - 如何以成对匹配的方式组合多个列中的值,可能使用 'mutate' 或 'coalesce' ?

python - 我可以将 Pandas Dataframe.assign(...) 与变量名一起使用吗

python - 如何获取两个数据框列之间的交集项?

python - 同时使用内置 setattr 和索引切片

python - 如何验证何时使用 Python 制作副本?

python - 跨多个数据帧计算新列

python - 查找系列值显着变化的索引值

printing - 打印效果良好的 matplotlib 的颜色选择