イベントのさまざまな発生の時間を取得するためにデータフレームを変換する方法は?

tsu90280

次のDataFrameがあるとします。

+-------+-----+-------+-----+--------+---------------------------+
|  DID  | CID | Event | OID | Source |         TimeStamp         |
+-------+-----+-------+-----+--------+---------------------------+
| 25078 |  14 | QBT   |   0 | EMS    | 2019-10-15 10:54:35 +0000 |
| 25078 |  14 | NDOBT |   0 | EMS    | 2019-10-15 10:54:48 +0000 |
| 25078 |  14 | SBT   |   0 | EMS    | 2019-10-15 10:54:52 +0000 |
| 25078 |  14 | SBT-1 |   0 | ECS    | 2019-10-15 11:00:01 +0000 |
| 25078 |  14 | SBT-1 |   0 | ECS    | 2019-10-15 11:00:26 +0000 |
| 25078 |  14 | SBT-1 |   0 | ECS    | 2019-10-15 11:00:50 +0000 |
| 25078 |  14 | SBT   |   0 | EMS    | 2019-10-15T14:27:45       |
| 25078 |  14 | SBT   |   0 | EMS    | 2019-10-15T14:27:45       |
| 25078 |  14 | LSFA  |   0 | SPDLS  | 2019-10-15T14:28:16       |
| 25078 |  14 | LSFA  |   0 | SPDLS  | 2019-10-15T14:28:16       |
| 25078 |  14 | FEAR  |   0 | CBS    | 2019-10-15T14:28:18       |
| 25078 |  14 | FEAR  |   0 | CBS    | 2019-10-15T14:28:18       |
| 25078 |  14 | SBT   |   0 | EMS    | 2019-10-15T14:28:44       |
| 25078 |  14 | SBT   |   0 | EMS    | 2019-10-15T14:28:44       |
| 25078 |  14 | LSFA  |   0 | SPDLS  | 2019-10-15T14:30:55       |
| 25078 |  14 | LSFA  |   0 | SPDLS  | 2019-10-15T14:30:55       |
| 25078 |  14 | SBT   |   0 | EMS-1  | 2019-10-15T15:28:43       |
| 25078 |  14 | SBT   |   0 | EMS-1  | 2019-10-15T15:29:02       |
| 25078 |  14 | FEAR  |   0 | CBS    | 2019-10-15T15:30:51       |
| 25078 |  14 | FEAR  |   0 | CBS    | 2019-10-15T15:30:51       |
| 25078 |  14 | DBT   |   0 | RS     | 2019-10-15T15:44:23       |
| 25078 |  14 | QBT   |   0 | EMS-1  | 2019-10-15T16:02:16       |
+-------+-----+-------+-----+--------+---------------------------+

最終的な出力が次のようになるように、いくつかのイベントとソースの最初と最後の発生を取得したいと思います。

+-------+-----+---------------------+--------------------+---------------------+--------------------+---------------------------+---------------------------+---------------------------+---------------------+
|  DID  | CID |  Event-QBT-Last-DT  | Event-QBT-First-DT |  Event-SBT-Last-DT  | Event-SBT-First-DT |    Screen-ECS-First-DT    |    Screen-ECS-Last-DT     |      FirstTimeUsage       |   LastTime Usage    |
+-------+-----+---------------------+--------------------+---------------------+--------------------+---------------------------+---------------------------+---------------------------+---------------------+
| 25078 |  14 | 2019-10-15T16:02:16 | 10/15/19 10:54 AM  | 2019-10-15T15:29:02 | 10/15/19 10:54 AM  | 2019-10-15 11:00:01 +0000 | 2019-10-15 11:00:50 +0000 | 2019-10-15 10:54:35 +0000 | 2019-10-15T16:02:16 |
+-------+-----+---------------------+--------------------+---------------------+--------------------+---------------------------+---------------------------+---------------------------+---------------------+

パンダを使用してこれを実現するにはどうすればよいですか。

ジェズリール

アイデアはで行をフィルタリングしているboolean indexingDataFrame.isin、いくつかのイベントの取得最初と最後の出現のために、次に使用GroupBy.aggしてfirstlastしてリシェイプでDataFrame.unstack最後のフラット化、MultiIndex列に:

L = ['QBT','SBT']

df1 = (df[df['Event'].isin(L)]
         .groupby(['OID','DID','CID','Event'])['TimeStamp']
         .agg([('Last-DT','last'), ('First-DT','first')])
         .unstack()
         .sort_index(axis=1, level=1))
df1.columns = [f'Event-{b}-{a}' for a, b in df1.columns]
#print (df1)

最初と最後の発生には、フィルターなしEvent、groupbyなし、およびなしの最初のソリューションを使用しますunstack

df2 = (df.groupby(['OID','DID','CID'])['TimeStamp']
         .agg([('FirstTimeUsage','first'), ('LastTime Usage','last')]))
#print (df2)

最後にDataFrame.join一緒に参加する

df = df1.join(df2).reset_index()
print (df)
   OID    DID  CID         Event-QBT-First-DT    Event-QBT-Last-DT  \
0    0  25078   14  2019-10-15 10:54:35 +0000  2019-10-15T16:02:16   

          Event-SBT-First-DT    Event-SBT-Last-DT             FirstTimeUsage  \
0  2019-10-15 10:54:52 +0000  2019-10-15T15:29:02  2019-10-15 10:54:35 +0000   

        LastTime Usage  
0  2019-10-15T16:02:16  

編集:次の列を処理するために、ビット変更生成df1

L = ['QBT','SBT']

df1 = (df[df['Event'].isin(L)]
         .groupby(['OID','DID','CID','Event'])['TimeStamp']
         .agg([('Last-DT','last'), ('First-DT','first')])
         .unstack()
         .sort_index(axis=1, level=1))
df1.columns = [f'Event-{b}-{a}' for a, b in df1.columns]
#print (df1)

L2 = ['ECS']
df11 = (df[df['Source'].isin(L2)]
         .groupby(['OID','DID','CID','Source'])['TimeStamp']
         .agg([('Last-DT','last'), ('First-DT','first')])
         .unstack()
         .sort_index(axis=1, level=1))
df11.columns = [f'Screen-{b}-{a}' for a, b in df11.columns]

df2 = (df.groupby(['OID','DID','CID'])['TimeStamp']
         .agg([('FirstTimeUsage','first'), ('LastTime Usage','last')]))

最後の使用concat

df = pd.concat([df1, df11, df2], axis=1).reset_index()
print (df)
   OID    DID  CID         Event-QBT-First-DT    Event-QBT-Last-DT  \
0    0  25078   14  2019-10-15 10:54:35 +0000  2019-10-15T16:02:16   

          Event-SBT-First-DT    Event-SBT-Last-DT        Screen-ECS-First-DT  \
0  2019-10-15 10:54:52 +0000  2019-10-15T15:29:02  2019-10-15 11:00:01 +0000   

          Screen-ECS-Last-DT             FirstTimeUsage       LastTime Usage  
0  2019-10-15 11:00:50 +0000  2019-10-15 10:54:35 +0000  2019-10-15T16:02:16  

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

ネストされたデータフレームをさまざまな数の要素で変換する

分類Dev

パンダデータフレームをフィルタリングするためにfloatをクエリすると、TypeErrorが発生します: '>' 'str'と 'float'のインスタンス間ではサポートされていません

分類Dev

データフレーム内のさまざまな時間枠の最後の値を取得する

分類Dev

さまざまな長さの文字列のベクトルをデータフレームに配置する方法

分類Dev

パンダのデータフレーム列にさまざまな値を格納するための最良の方法は?

分類Dev

大きなデータフレームでさまざまな時間形式を高速に変換するにはどうすればよいですか?

分類Dev

さまざまなタイプの大きなデータフレームに重複をドロップする時間効率の良い方法

分類Dev

パンダの単一列データフレームをシリーズまたは派手なベクトルに変換する方法

分類Dev

ネストされたJSONデータをデータフレームまたは辞書にインポートするための最良の方法は?

分類Dev

Firebase「デフォルトの認証情報を読み込めませんでした。」正常に動作する時間の50%はランダムにのみ発生し、残りの50%はこのエラーを発生させます

分類Dev

データを保存するためのforループからさまざまなデータフレームを動的に作成する方法

分類Dev

列のリストをさまざまなデータ型に変更するためのよりPython的な(またはパンダラブルな)方法

分類Dev

たくさんのRデータフレーム列をたくさんのベクトルに変換するRフレンドリーな方法

分類Dev

複数のcsvファイルを異なるデータフレームとしてインポートするためにループする方法とインポートされた各データフレームには、ファイル名または少なくともその一部があります

分類Dev

さまざまなタイプのイテレータを変換する方法

分類Dev

データフレーム間の違いを取得するためのPythonの方法はありますか?

分類Dev

長いタスクの処理中にイベントを発生させるC#.netは、処理を続行するために「一時停止」と「続行」を持つことができるフォームを表示します

分類Dev

さまざまなカテゴリ レベルの複数の列をワイド フォーマットに変換する方法は?

分類Dev

Rのデータフレームで、因子のさまざまなレベルを互いに分割するのに最適な方法は何ですか?

分類Dev

ウェブサイトAndroidからデータを取得するためのさまざまな方法

分類Dev

データフレームのインデックス作成のために文字ベクトルを正規表現に変換する方法

分類Dev

さまざまなイベントでタイムギャップを取得するためのSQLクエリ

分類Dev

タイムスタンプをJavascriptのさまざまなタイムゾーンの値に変換する

分類Dev

パンダのデータフレームの日付とさまざまな時間形式を単一のタイムスタンプに連結するにはどうすればよいですか?

分類Dev

パンダのデータフレームを作成するためのforループ-さまざまなデータフレーム名?

分類Dev

データフレーム内のさまざまな空の値をすべて置き換えて、「-」などではなくすべてNaNにする方法

分類Dev

生の時系列データをRで整理されたデータフレームに変換する

分類Dev

RデータフレームをSparkデータフレームに変換するためのDataBricksのサイズ制限はありますか?

分類Dev

単一のデータフレームでさまざまなアイテムの期間を作成する

Related 関連記事

  1. 1

    ネストされたデータフレームをさまざまな数の要素で変換する

  2. 2

    パンダデータフレームをフィルタリングするためにfloatをクエリすると、TypeErrorが発生します: '>' 'str'と 'float'のインスタンス間ではサポートされていません

  3. 3

    データフレーム内のさまざまな時間枠の最後の値を取得する

  4. 4

    さまざまな長さの文字列のベクトルをデータフレームに配置する方法

  5. 5

    パンダのデータフレーム列にさまざまな値を格納するための最良の方法は?

  6. 6

    大きなデータフレームでさまざまな時間形式を高速に変換するにはどうすればよいですか?

  7. 7

    さまざまなタイプの大きなデータフレームに重複をドロップする時間効率の良い方法

  8. 8

    パンダの単一列データフレームをシリーズまたは派手なベクトルに変換する方法

  9. 9

    ネストされたJSONデータをデータフレームまたは辞書にインポートするための最良の方法は?

  10. 10

    Firebase「デフォルトの認証情報を読み込めませんでした。」正常に動作する時間の50%はランダムにのみ発生し、残りの50%はこのエラーを発生させます

  11. 11

    データを保存するためのforループからさまざまなデータフレームを動的に作成する方法

  12. 12

    列のリストをさまざまなデータ型に変更するためのよりPython的な(またはパンダラブルな)方法

  13. 13

    たくさんのRデータフレーム列をたくさんのベクトルに変換するRフレンドリーな方法

  14. 14

    複数のcsvファイルを異なるデータフレームとしてインポートするためにループする方法とインポートされた各データフレームには、ファイル名または少なくともその一部があります

  15. 15

    さまざまなタイプのイテレータを変換する方法

  16. 16

    データフレーム間の違いを取得するためのPythonの方法はありますか?

  17. 17

    長いタスクの処理中にイベントを発生させるC#.netは、処理を続行するために「一時停止」と「続行」を持つことができるフォームを表示します

  18. 18

    さまざまなカテゴリ レベルの複数の列をワイド フォーマットに変換する方法は?

  19. 19

    Rのデータフレームで、因子のさまざまなレベルを互いに分割するのに最適な方法は何ですか?

  20. 20

    ウェブサイトAndroidからデータを取得するためのさまざまな方法

  21. 21

    データフレームのインデックス作成のために文字ベクトルを正規表現に変換する方法

  22. 22

    さまざまなイベントでタイムギャップを取得するためのSQLクエリ

  23. 23

    タイムスタンプをJavascriptのさまざまなタイムゾーンの値に変換する

  24. 24

    パンダのデータフレームの日付とさまざまな時間形式を単一のタイムスタンプに連結するにはどうすればよいですか?

  25. 25

    パンダのデータフレームを作成するためのforループ-さまざまなデータフレーム名?

  26. 26

    データフレーム内のさまざまな空の値をすべて置き換えて、「-」などではなくすべてNaNにする方法

  27. 27

    生の時系列データをRで整理されたデータフレームに変換する

  28. 28

    RデータフレームをSparkデータフレームに変換するためのDataBricksのサイズ制限はありますか?

  29. 29

    単一のデータフレームでさまざまなアイテムの期間を作成する

ホットタグ

アーカイブ