假设我有以下三个具有重叠索引的系列
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/