我尝试搜索所有数据帧都具有相同值(例如1)的时间间隔(例如1分钟)。
给出可能具有不同时间戳的 n 时间序列(df1
,df2
,df3
,...)。时间序列具有离散状态值0
和1
。从这些跳转函数中,我希望创建一个序列,其值永远不应大于1。我想以某种方式将所有帧求和并应用max(x,1)。
import pandas as pd
df1 = pd.DataFrame({'2018-01-01 00:00:00': [1],
'2018-01-01 00:01:00': [0],
'2018-01-01 00:03:00': [0],
'2018-01-01 00:04:00': [1]})
df2 = pd.DataFrame({'2018-01-01 00:00:00': [0],
'2018-01-01 00:01:30': [1],
'2018-01-01 00:03:00': [0],
'2018-01-01 00:04:30': [1]})
df3 = pd.DataFrame({'2018-01-01 00:00:00': [1],
'2018-01-01 00:01:15': [1],
'2018-01-01 00:03:00': [0],
'2018-01-01 00:04:45': [0]})
frames = [df1, df2, df3]
result = pd.concat(frames)
print(df1.add(df2.add(df3,axis="index",fill_value=0),axis="index",fill_value=0))
中间结果:
[3 rows x 8 columns]
2018-01-01 00:00:00 2018-01-01 00:01:00 2018-01-01 00:01:15 ... 2018-01-01 00:04:00 2018-01-01 00:04:30 2018-01-01 00:04:45
0 2 0.0 1.0 ... 1.0 1.0 0.0
我想有一种更舒适,更直观的方法(concat,merge,join ...)来做到这一点。我将问题分解为:
答案 0 :(得分:0)
IIUC,您可以只使用max
:
pd.concat([df1,df2,df3], sort=False).max()
或者如果您想按索引对齐数据框:
pd.concat([df1,df2,df3], sort=False).groupby(level=0).max()
输出:
2018-01-01 00:00:00 2018-01-01 00:01:00 2018-01-01 00:03:00 \
0 1 0.0 0