使用来自另一个数据帧的时间索引插入熊猫帧

问题描述 投票:0回答:1

因此,我有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列进行插值,并且合并的帧将为ds中的每个值都具有一行框架1中的[]列。在熊猫中做到这一点的最佳方法是什么?我尝试了merge_asof函数,但是它执行了最近邻域内插,但没有获得所有时间戳。

python pandas
1个回答
0
投票

您可以将append一帧转换为另一帧并使用interpolate(),例如:

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

© www.soinside.com 2019 - 2024. All rights reserved.