我有以下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
>>>
有没有更好的方法来做到这一点?
答案 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