如何使用PANDAS插值数据和角度

费德里科·外邦

我有一个简单的数据框df,其中包含三列:

  • Time:以秒表示
  • A:在-inf+ inf之间变化的一组值
  • B:一组角度(度),范围介于0359之间

这是数据框

df = pd.DataFrame({'Time':[0,12,23,25,44,50], 'A':[5,7,9,8,11,6], 'B':[300,358,4,10,2,350]})

它看起来像这样:

        Time  A   B
    0   0     5   300
    1   12    7   358
    2   23    9   4
    3   25    8   10
    4   44    11  2
    5   50    6   350

我的想法是在0到50秒之间插入数据,我能够使用以下代码行实现我的目标:

y  = pd.DataFrame({'Time':list(range(df['Time'].iloc[0], df['Time'].iloc[-1]))})
df = pd.merge(left=y, right=df, on='Time', how='left').interpolate()

问题:即使正确地插补了A列,但B列还是错误的,因为没有执行360之间的角度插补这是一个例子:

    Time       A             B
12  12  7.000000    358.000000
13  13  7.181818    325.818182
14  14  7.363636    293.636364
15  15  7.545455    261.454545
16  16  7.727273    229.272727
17  17  7.909091    197.090909
18  18  8.090909    164.909091
19  19  8.272727    132.727273
20  20  8.454545    100.545455
21  21  8.636364    68.363636
22  22  8.818182    36.181818
23  23  9.000000    4.000000

问题:您能建议我一个聪明高效的方法来解决此问题,并能够正确地插值0/360之间的角度吗?

Jdehesa

您应该能够针对角度列使用此问题中描述的方法

import numpy as np
import pandas as pd

df = pd.DataFrame({'Time':[0,12,23,25,44,50], 'A':[5,7,9,8,11,6], 'B':[300,358,4,10,2,350]})
df['B'] = np.rad2deg(np.unwrap(np.deg2rad(df['B'])))
y  = pd.DataFrame({'Time':list(range(df['Time'].iloc[0], df['Time'].iloc[-1]))})
df = pd.merge(left=y, right=df, on='Time', how='left').interpolate()
df['B'] %= 360
print(df)

输出:

    Time          A           B
0      0   5.000000  300.000000
1      1   5.166667  304.833333
2      2   5.333333  309.666667
3      3   5.500000  314.500000
4      4   5.666667  319.333333
5      5   5.833333  324.166667
6      6   6.000000  329.000000
7      7   6.166667  333.833333
8      8   6.333333  338.666667
9      9   6.500000  343.500000
10    10   6.666667  348.333333
11    11   6.833333  353.166667
12    12   7.000000  358.000000
13    13   7.181818  358.545455
14    14   7.363636  359.090909
15    15   7.545455  359.636364
16    16   7.727273    0.181818
17    17   7.909091    0.727273
18    18   8.090909    1.272727
19    19   8.272727    1.818182
20    20   8.454545    2.363636
21    21   8.636364    2.909091
22    22   8.818182    3.454545
23    23   9.000000    4.000000
24    24   8.500000    7.000000
25    25   8.000000   10.000000
26    26   8.157895    9.578947
27    27   8.315789    9.157895
28    28   8.473684    8.736842
29    29   8.631579    8.315789
30    30   8.789474    7.894737
31    31   8.947368    7.473684
32    32   9.105263    7.052632
33    33   9.263158    6.631579
34    34   9.421053    6.210526
35    35   9.578947    5.789474
36    36   9.736842    5.368421
37    37   9.894737    4.947368
38    38  10.052632    4.526316
39    39  10.210526    4.105263
40    40  10.368421    3.684211
41    41  10.526316    3.263158
42    42  10.684211    2.842105
43    43  10.842105    2.421053
44    44  11.000000    2.000000
45    45  11.000000    2.000000
46    46  11.000000    2.000000
47    47  11.000000    2.000000
48    48  11.000000    2.000000
49    49  11.000000    2.000000

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在pandas数据框Python3中使用多列将复数转换为幅度和角度?

如何从角度插值数据中删除空格

使用插值函数填充 Pandas 数据框中的 NaN

使用插值向 Pandas 数据框添加行

如何使用循环插值面板数据中的值

如何同时使用角度1.3.4和角度2

Python pandas数据框:使用数据框数据进行插值而不更新它。只需获取插值即可。

在ngClass中使用插值的角度

如何在角度6中将插值数据绑定到ngModel

如何使用线性插值来插补丢失的时间序列数据?

如何使用电子和角度与NamedPipe连接

如何在打字稿和角度中使用$ scope。$ on?

Python Pandas DataFrame插值丢失的数据

我正在尝试使用numpy.interp从pandas数据帧中插值,但它不断返回错误的插值

角度模板插值

如何在角度中使用字符串插值添加routerlink

如何在角度列表标记中的另一个内使用插值

我如何根据角度条件使用字符串插值

如何将值插值到角度参考?

如何使用线性插值插值numpy数组

角度(2+)-延迟数据绑定插值

角度7和角度材料如何获取mat-select的选定选项文本而不是其值

如何对分类数据进行插值

使用XArray插值dataArray丢失的数据

如何通过线性插值在 Pandas 数据框中创建新的时间条目

如何根据对象属性值在下拉列表中选择值-选择和角度

如何仅使用以前的值在 Pandas 中进行插值?

角度2:如何通过[routerLink]提供插值

角度-如何在插值中编写条件?