Pandas 线性模式下的展开度
我有一个熊猫数据帧,x为时间,y为度(蓝线)。 我想打开角度,第一个360度是360度,第二个360度是720度,第三个360度是1080度,依此类推(橙色线) 我可以使用for循环和if条件来实现这一点,但我正在寻找一个优雅的解决方案,这样我就可以在pandas数据框中将这些未包装的数据作为一个新列Pandas 线性模式下的展开度,pandas,numpy,Pandas,Numpy,我有一个熊猫数据帧,x为时间,y为度(蓝线)。 我想打开角度,第一个360度是360度,第二个360度是720度,第三个360度是1080度,依此类推(橙色线) 我可以使用for循环和if条件来实现这一点,但我正在寻找一个优雅的解决方案,这样我就可以在pandas数据框中将这些未包装的数据作为一个新列 注:t不是等采样的我制作了一些原始数据来说明如何进行 import pandas as pd df = pd.DataFrame({'deg_wrapped': [10,80,150,220,
注:t不是等采样的我制作了一些原始数据来说明如何进行
import pandas as pd
df = pd.DataFrame({'deg_wrapped': [10,80,150,220,300,20,90,170,240,300,360,50,150,220,290]})
# get row to row differences, fill NA at start with first degree value
df['diffs'] = df.deg_wrapped.diff().fillna(df.deg_wrapped)
# unwrap at jump points, assuming monotonic data
df.loc[df.diffs < 0, 'diffs'] = 360 - df.deg_wrapped.shift(1) + df.deg_wrapped
df['deg_unwrapped'] = df.diffs.cumsum()
将熊猫作为pd导入
df=pd.数据帧({'deg_wrapped':[10,80150220300,20,90170240300360,5015020290]})
#获取行与行之间的差异,在开始处用一阶值填充NA
df['diffs']=df.deg_-wrapped.diff().fillna(df.deg_-wrapped)
#假设数据单调,在跳跃点展开
测向位置[df.diffs<0,'diffs']=360-测向度包裹。移位(1)+测向度包裹
df['deg_unwrapped']=df.diff.cumsum()
屈服
deg_wrapped diffs deg_unwrapped
0 10 10.0 10.0
1 80 70.0 80.0
2 150 70.0 150.0
3 220 70.0 220.0
4 300 80.0 300.0
5 20 80.0 380.0 <--- jump point
6 90 70.0 450.0
7 170 80.0 530.0
8 240 70.0 600.0
9 300 60.0 660.0
10 360 60.0 720.0
11 50 50.0 770.0 <--- jump point
12 150 100.0 870.0
13 220 70.0 940.0
14 290 70.0 1010.0
deg_包裹diff deg_展开
0 10 10.0 10.0
1 80 70.0 80.0
2 150 70.0 150.0
3 220 70.0 220.0
4 300 80.0 300.0
5 20 80.0 380.0