【问题标题】:interpolate pandas frame using time index from another data frame使用来自另一个数据帧的时间索引插入 pandas 帧
【发布时间】:2019-10-02 22:31:40
【问题描述】:

所以,我有 2 个数据框,其中第一个具有以下结构:

               'ds',             '1_sensor_id',     '1_val_1', '1_val_2'
0    2019-09-13 12:40:00             33469             30               43   
1    2019-09-13 12:45:00             33469             43               43

第二个结构如下:

              'ds',                '2_sensor_id', '2_val_1', '2_val_2'


0    2019-09-13 12:42:00             20006             6      50
1    2019-09-13 12:47:00             20006             5      80

所以我想做的是通过插值合并两个熊猫帧。所以最终,合并帧应该具有在第 1 帧中定义的时间戳 (ds) 定义的值,并且 2_val_12_val_2 列将被插值,并且合并帧将为 @987654326 中的每个值都有一行@ 第 1 帧中的列。在 pandas 中执行此操作的最佳方法是什么?我尝试了merge_asof 函数,但这会进行最近邻域插值,但我没有得到所有时间戳。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以append一帧到另一帧并使用interpolate(),例如:

    import datetime
    import pandas as pd
    
    df1 = pd.DataFrame(columns=['ds', '1_sensor_id', '1_val_1', '1_val_2'],
                       data=[[datetime.datetime(2019, 9, 13, 12, 40, 00), 33469, 30, 43],
                             [datetime.datetime(2019, 9, 13, 12, 45, 00), 33469, 33, 43]])
    df2 = pd.DataFrame(columns=['ds', '2_sensor_id', '2_val_1', '2_val_2'],
                       data=[[datetime.datetime(2019, 9, 13, 12, 42, 00), 20006, 6, 50],
                             [datetime.datetime(2019, 9, 13, 12, 47, 00), 20006, 5, 80]])
    df = df1.append(df2, sort=False)
    df.set_index('ds', inplace=True)
    df.interpolate(method = 'time', limit_direction='backward', inplace=True)
    print(df)
                         1_sensor_id  1_val_1  ...  2_val_1  2_val_2
    ds                                         ...                  
    2019-09-13 12:40:00      33469.0     30.0  ...      6.0     50.0
    2019-09-13 12:45:00      33469.0     33.0  ...      5.4     68.0
    2019-09-13 12:42:00          NaN      NaN  ...      6.0     50.0
    2019-09-13 12:47:00          NaN      NaN  ...      5.0     80.0
    
    

    【讨论】:

      猜你喜欢
      • 2013-08-13
      • 2021-09-22
      • 2015-12-28
      • 2017-06-20
      • 2022-01-21
      • 1970-01-01
      • 2020-09-20
      • 2022-12-17
      • 2021-05-07
      相关资源
      最近更新 更多