Pandas聚合有序点坐标

时间:2016-12-13 21:12:14

标签: python pandas

我有以下pandas系列有序点坐标:

>>> import pandas as pd
>>> d=pd.Series([(1,1),(2,2),(3,4),(4,6)])
>>> d
0    (1, 1)
1    (2, 2)
2    (3, 4)
3    (4, 6)
dtype: object
>>> 

我想创建一系列由这些点组成的线段。在这种情况下,将有3个线段(在点0和1,1和2之间,以及2和3之间。

我可以通过将原始系列与其“移位”版本连接起来,删除第一个空值,然后将函数应用于两列来创建下面的内容。

>>> pd.concat([d.shift(),d],1).dropna().apply(lambda x:tuple([x[0], x[1]]),1)
1    ((1, 1), (2, 2))
2    ((2, 2), (3, 4))
3    ((3, 4), (4, 6))
dtype: object
>>> 

有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

我喜欢将zip用于此

pd.Series(list(zip(d.values[:-1], d.values[1:])))

0    ((1, 1), (2, 2))
1    ((2, 2), (3, 4))
2    ((3, 4), (4, 6))
dtype: object