pandas - 熊猫中的串联系列丢弃重叠的索引
问题描述
假设我有以下三个具有重叠索引的系列
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
当可能有许多大长度系列时,是否有一种快速有效的方法来做到这一点。
编辑
我正在寻找一种有效的方法来做到这一点,因为实际上系列的长度和数量都很大,分别约为 100k 和 10k。
解决方案
Ideaconcatenate
用于展平索引和值,并使用反转掩码 bySeries
过滤: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])
推荐阅读
- elasticsearch - Elasticsearch:如何添加“created_at”和“updated_at”时间戳?
- sql - 如何通过 SQL 中的批处理脚本命令执行 SQL 脚本?
- java - 我如何贴标签
- c# - 无法在 C# 中向 GRID 面板添加不同的控件
- javascript - 我怎样才能在fullcalendar中显示超过标题
- java-9 - 是否可以使用 jvm 模式使用 prunsrv 启动 Java 运行时映像?
- ios - 当应用程序即将被卸载或更新时,Cordova 中是否有事件?
- java - 为什么直接绘制像素比在 BufferedImage 中绘制数据要慢?
- php - 有没有办法重复 li 类“x”次?
- android - 时间戳的整个小时?