【问题标题】:Merge two dataframes based on chronological order根据时间顺序合并两个数据帧
【发布时间】:2022-11-02 22:16:01
【问题描述】:

我有两个包含 2 列的数据框,第一列是列持续时间,采用浮点值,例如 239.4 小时,第二列是列事件,为 0 或 1,0 表示失败,1 表示成功。如果事件值发生变化,则触发新事件。我想要的是跟踪每个数据帧中的变化,然后根据时间顺序合并它们。请注意,事件的持续时间可能为 0.007 小时,持续时间为数千小时,因此事件的间隔不均匀。我不知道该怎么做。

数据框的示例以及结果的外观:

Duration Event
0.06 0
2340 1
145 0
Duration Event
9 1
1200 0
124 1

结果应该是这样的

Duration Event State
0.06 0 State 0
2340 1 State 1
9 1 State 2
1200 0 State 3
124 1 State 4
145 0 State 5

【问题讨论】:

  • 你想要一个时间顺序,但为什么结果中的 Duration 列没有排序?你能解释一下为什么例如 2340 是状态 1 而 9 是状态 2?

标签: python pandas dataframe time


【解决方案1】:

这是你想要达到的目标吗?

import pandas as pd
df1 = pd.DataFrame({'duration': [0.06, 2340, 145], 'Event': [0, 1, 0]})
df2 = pd.DataFrame({'duration': [9.0, 1200, 124], 'Event': [1, 0, 1]})
df1.merge(df2, how = 'outer').sort_values(by = ['duration'])

输出:

duration Event
0 0.06 0
3 9.00 1
5 124.00 1
2 145.00 0
4 1200.00 0
1 2340.00 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2019-12-21
    • 2016-03-02
    • 1970-01-01
    相关资源
    最近更新 更多