gpt4 book ai didi

python - 使用持续时间匹配组合三个不同的时间戳数据帧

转载 作者:行者123 更新时间:2023-12-01 07:36:12 24 4
gpt4 key购买 nike

我有三个具有不同数据帧和频率的数据帧。我想将它们组合成一个数据框。

第一个数据框收集来自太阳的阳光,如下所示:

df1 = 
index light_data
05/01/2019 06:54:00.000 10
05/01/2019 06:55:00.000 20
05/01/2019 06:56:00.000 30
05/01/2019 06:57:00.000 40
05/01/2019 06:59:00.000 50
05/01/2019 07:01:00.000 60
05/01/2019 07:03:00.000 70
05/01/2019 07:04:00.000 80
05/01/2019 07:06:00.000 90

第二个数据框从 A 单元收集太阳能

df2 = 
index P1
05/01/2019 06:54:24.000 100
05/01/2019 06:59:32.000 200
05/01/2019 07:04:56.000 300

第三个数据框从 B 单元收集太阳能

df3 = 
index P2
05/01/2019 06:56:45.000 400
05/01/2019 07:01:21.000 500
05/01/2019 07:06:34.000 600

以上三个是来自现场的测量结果。三个具有不同的时间戳。现在我想将所有三个组合成具有一个时间戳的数据帧。

  1. df1 数据每分钟发生一次
  2. df2df3 每五分钟在不同时间发生一次。
  3. 组合三个数据帧,以 df2 时间戳作为引用索引,不带秒信息。

最后,我希望输出如下所示:

df_combine =     
combine_index P1 light_data1 P2 light_data2
05/01/2019 06:54:00 100 10 400 30
05/01/2019 06:59:00 200 50 500 60
05/01/2019 07:04:00 300 80 600 90
# Note: combine_index is df2 index with no seconds

enter image description here

最佳答案

好问题,我正在使用 reindexnearest 作为方法 1

df1['row']=df1.index
s1=df1.reindex(df2.index,method='nearest')
s2=df1.reindex(df3.index,method='nearest')
s1=s1.join(df2).set_index('row')
s2=s2.join(df3).set_index('row')

pd.concat([s1,s2.reindex(s1.index,method='nearest')],1)
Out[67]:
light_data A light_data B
row
2019-05-01 06:54:00 10 100 40 400
2019-05-01 06:59:00 50 200 60 500
2019-05-01 07:04:00 80 300 90 600

或者在最后一行使用merge_asof

pd.merge_asof(s1,s2,left_index=True,right_index=True,direction='nearest')
Out[81]:
light_data_x A light_data_y B
row
2019-05-01 06:54:00 10 100 40 400
2019-05-01 06:59:00 50 200 40 400
2019-05-01 07:04:00 80 300 90 600
<小时/>

使其可扩展

df1['row']=df1.index

l=[]
for i,x in enumerate([df2,df3]):
s1=df1.reindex(x.index,method='nearest')
if i==0:
l.append(s1.join(x).set_index('row').add_suffix(x.columns[0].str[-1]))
else :
l.append(s1.join(x).set_index('row').reindex(l[0].index,method='nearest').add_suffix(x.columns[0].str[-1]))
pd.concat(l,1)

关于python - 使用持续时间匹配组合三个不同的时间戳数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56980740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com