時間間隔に基づいて2つのデータフレームをマージし、それらを変換する方法

Tyr

2つのデータフレームがあります。1つはユーザーが手動で作成したもので、もう1つはマシンからのエラーです。最初のデータフレーム(df_a)の時間間隔に基づいてそれらをマージしたい

これがデータフレームです。

d_a = {'Station' : ['A1','A2'],
       'Reason_a' : ['Electronic','Feed'],
       'StartTime_a' : ['2019-01-02 02:00:00','2019-01-02 04:22:00'],
       'EndTime_a' : ['2019-01-02 02:20:00', '2019-01-02 04:45:00']}

d_b = {'Station' : ['A1','A1','A1','A2','A2','A2'],
       'Reason_b' : ['a','n','c','d','e','n'],
       'StartTime_b' : ['2019-01-02 00:00:00.000','2019-01-02 00:05:00.000','2019-01-01 23:55:00.000','2019-01-02 04:19:53.000','2019-01-02 04:19:37.000','2019-01-02 04:23:00.000'],
       'EndTime_b' : ['2019-01-02 00:19:15.000','2019-01-02 00:29:45.000','2019-01-02 00:12:12.000','2019-01-02 04:27:12.000','2019-01-02 04:47:16.000','2019-01-02 04:52:45.000']}

df_a = pd.DataFrame(d_a)
df_b = pd.DataFrame(d_b)

有効なレコードと見なされる2つのデータフレームの時間間隔の交点。

condition1 = df_b start_time df_a開始時刻の後に開始し、df_a終了時刻の前に終了します

condition2 = df_b start_timeは、df_aの開始時刻より前に開始しますが、df_aの終了時刻より前に終了します。

condition3 = df_b start_timeは、df_aの開始時刻とdf_aの終了時刻の間に開始しますが、df_aの終了時刻の後に終了します。

最後に、条件に基づいてこれら2つのデータフレームをマージしたいと思います。私の理想的なテーブルは以下のようになります

 Station     Reason_a        a     n     c     d    e 
  A1         Electronic      1     1     1     0    0
  A2          Feed           0     1     0     1    0

この問題にどのように取り組むべきですか?コメントがあれば参考になります。

前もって感謝します。

ivallesp

テーブルをマージしstationて交差点を計算することで解決します:D

import numpy as np

df = pd.merge(df_a, df_b, on="Station")

# Convert to date
for datevar in ["StartTime_a", "StartTime_b", "EndTime_a", "EndTime_b"]:
    df[datevar] = pd.to_datetime(df[datevar])

# Intersections definition
df["intersection"] = (((df.StartTime_a > df.StartTime_b) & (df.StartTime_a < df.EndTime_b)) |
                      ((df.StartTime_a < df.StartTime_b) & (df.EndTime_a > df.StartTime_b)))

# Filter only intersections
(df[["Station", "Reason_a", "Reason_b", "intersection"]]
.pivot_table(index=["Station", "Reason_a"], columns="Reason_b", aggfunc=np.sum)
.fillna(0).astype(int)) 

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの時間間隔の間の日付に基づいてデータフレームをマージする方法は?

分類Dev

不規則な時間列に基づいて2つのデータフレームをマージする

分類Dev

2つの日付の間でフィルタリングされた時間に基づいて新しいデータフレームを作成する方法

分類Dev

時間の粒度に基づいて2つのデータフレーム間で値を転送します

分類Dev

時間範囲の違いに基づいてパンダの2つのデータフレームをマージする

分類Dev

同じ時間に基づいてパンダのデータフレームをマージする

分類Dev

パンダ:時間間隔に基づいてデータフレームを結合します

分類Dev

時間間隔に基づいて時間インデックス付きDaskデータフレームをcsvに出力する方法

分類Dev

異なるデータフレームの時間間隔に基づいて「イベントダミー」(?)を挿入する方法

分類Dev

それらの間の間隔に基づいてタイムスタンプをグループ化する

分類Dev

共通の列がない他の2つの日付間の日付に基づいて2つのデータフレームをマージする

分類Dev

キー列に基づいて2つのデータフレームをマージする最良の方法

分類Dev

Rの同様の値に基づいて2つのデータフレームをマージする方法

分類Dev

最も近い日付に基づいて2つのデータフレームをマージする方法

分類Dev

パンダの列に基づいて2つのデータフレームをマージする方法

分類Dev

一意の異なる時間間隔に基づいて2つのデータセットをマージし、一致しないすべての値(R)を含むデータセットを作成します

分類Dev

特定の列の値に基づいて2つのデータフレームを比較し、パンダでそれらを削除する方法

分類Dev

列値のペア間の最も近い一致に基づいて2つのデータフレームをマージします

分類Dev

開始時間と終了時間に基づいて、複数の列の値をPandaデータフレームの1つの列に連結する方法

分類Dev

開始時間と終了時間に基づいて、複数の列の値をPandaデータフレームの1つの列に連結する方法

分類Dev

2つの列間の時間差に基づいてpysparkデータフレームをフィルタリングします

分類Dev

時間の長さに基づいてデータフレームから timedelta を削除する

分類Dev

2つの列に基づいて2つのデータフレームをマージします

分類Dev

条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

分類Dev

2つのデータフレーム間の比較一致に基づいて列を作成します

分類Dev

時間に基づいてSQLのレコードをマージする方法

分類Dev

Rの時間に基づいてデータフレームのグループを割り当てる方法

分類Dev

別のデータフレームの間隔に基づいて、データフレーム内の最大値を見つけます

分類Dev

パンダ:列の値に基づいて2つのデータフレームをマージします。同じ列値を含む複数の行の場合、それらを異なる列に追加します

Related 関連記事

  1. 1

    2つの時間間隔の間の日付に基づいてデータフレームをマージする方法は?

  2. 2

    不規則な時間列に基づいて2つのデータフレームをマージする

  3. 3

    2つの日付の間でフィルタリングされた時間に基づいて新しいデータフレームを作成する方法

  4. 4

    時間の粒度に基づいて2つのデータフレーム間で値を転送します

  5. 5

    時間範囲の違いに基づいてパンダの2つのデータフレームをマージする

  6. 6

    同じ時間に基づいてパンダのデータフレームをマージする

  7. 7

    パンダ:時間間隔に基づいてデータフレームを結合します

  8. 8

    時間間隔に基づいて時間インデックス付きDaskデータフレームをcsvに出力する方法

  9. 9

    異なるデータフレームの時間間隔に基づいて「イベントダミー」(?)を挿入する方法

  10. 10

    それらの間の間隔に基づいてタイムスタンプをグループ化する

  11. 11

    共通の列がない他の2つの日付間の日付に基づいて2つのデータフレームをマージする

  12. 12

    キー列に基づいて2つのデータフレームをマージする最良の方法

  13. 13

    Rの同様の値に基づいて2つのデータフレームをマージする方法

  14. 14

    最も近い日付に基づいて2つのデータフレームをマージする方法

  15. 15

    パンダの列に基づいて2つのデータフレームをマージする方法

  16. 16

    一意の異なる時間間隔に基づいて2つのデータセットをマージし、一致しないすべての値(R)を含むデータセットを作成します

  17. 17

    特定の列の値に基づいて2つのデータフレームを比較し、パンダでそれらを削除する方法

  18. 18

    列値のペア間の最も近い一致に基づいて2つのデータフレームをマージします

  19. 19

    開始時間と終了時間に基づいて、複数の列の値をPandaデータフレームの1つの列に連結する方法

  20. 20

    開始時間と終了時間に基づいて、複数の列の値をPandaデータフレームの1つの列に連結する方法

  21. 21

    2つの列間の時間差に基づいてpysparkデータフレームをフィルタリングします

  22. 22

    時間の長さに基づいてデータフレームから timedelta を削除する

  23. 23

    2つの列に基づいて2つのデータフレームをマージします

  24. 24

    条件に基づいて、Rの2つのデータフレーム間の列の値を検証する

  25. 25

    2つのデータフレーム間の比較一致に基づいて列を作成します

  26. 26

    時間に基づいてSQLのレコードをマージする方法

  27. 27

    Rの時間に基づいてデータフレームのグループを割り当てる方法

  28. 28

    別のデータフレームの間隔に基づいて、データフレーム内の最大値を見つけます

  29. 29

    パンダ:列の値に基づいて2つのデータフレームをマージします。同じ列値を含む複数の行の場合、それらを異なる列に追加します

ホットタグ

アーカイブ