パンダ:データフレームでフィルタリングする条件を書き込む

ピーター・ペトロフ

私はデータフレームを持っています

member_id,event_time,event_path,event_duration
19440,"2016-08-09 08:26:48",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,0
19440,"2016-08-09 08:27:04",ebesucher.ru/surfbar/Ochotona,25
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,0
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,2
19441,"2016-08-09 08:27:55",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#password,1
19441,"2016-08-09 08:27:58",neobux.com/m/l/,0
19441,"2016-08-09 08:27:59",neobux.com/m/l/,0
19441,"2016-08-09 08:28:01",http://new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423,11
19441,"2016-08-09 08:28:12",echo.msk.ru ,1
19441,"2016-08-09 08:28:15",neobux.com/m/l/?vl=A206591715C607425417A51CDE023499,2

を使用して新しい列を作成する必要があります。含まれているvisiting場合new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c4は、event_pathevent_path含み['echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']次に含む場合はvisiting == 1、それ以外の場合は-2です。完了したらmember_id、member_idに与えますvisiting = 1出力を希望します

member_id,event_time,event_path,event_duration, visiting
19440,"2016-08-09 08:26:48",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,0,2
19440,"2016-08-09 08:27:04",n,25,2
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,0,2
19440,"2016-08-09 08:27:53",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#identifier,2,2
19441,"2016-08-09 08:27:55",accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1#password,1,1
19441,"2016-08-09 08:27:58",neobux.com/m/l/,0,1
19441,"2016-08-09 08:27:59",neobux.com/m/l/,0,1
19441,"2016-08-09 08:28:01",http://new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423,11,1
19441,"2016-08-09 08:28:12",echo.msk.ru ,1,1
19441,"2016-08-09 08:28:15",neobux.com/m/l/?vl=A206591715C607425417A51CDE023499,2,1

やってみます

df['visiting'] = df.groupby("member_id").event_path.transform(lambda g: (g.isin(["new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c4", 'echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']).sum() > 1).astype(int)).replace(0, 2)

しかし、それは量のサイズだけを決定しますevent_path、しかし私は順序を考慮する必要があります。しかし、これを行う方法がわかりません。

完璧

文字列のgroupby.apply()ループを使用するを考えてみましょうevent_pathループを使用すると、リストインデックスで隣接する要素を検索できます。

def findevent(row):
    event_paths = row['event_path'].tolist()    
    row['visiting'] = 2

    for i in range(len(event_paths)):
        if 'new.enjoysurvey.com/ru/survey/649/index/m_e48f6e46bf0d222e2be70bc9067730c423423' in event_paths[i] and \
                            event_paths[i+1] in ['echo.msk.ru', 'edimdoma.ru', 'glaz.tv', 'vesti.ru']:
            row['visiting'] = 1
            break            
    return(row)

df = df.groupby(['member_id']).apply(findevent)
print(df)

#    member_id           event_time                                         event_path  event_duration  visiting
# 0      19440  2016-08-09 08:26:48  accounts.google.com/ServiceLogin?service=mail&...               0         2
# 1      19440  2016-08-09 08:27:04                      ebesucher.ru/surfbar/Ochotona              25         2
# 2      19440  2016-08-09 08:27:53  accounts.google.com/ServiceLogin?service=mail&...               0         2
# 3      19440  2016-08-09 08:27:53  accounts.google.com/ServiceLogin?service=mail&...               2         2
# 4      19441  2016-08-09 08:27:55  accounts.google.com/ServiceLogin?service=mail&...               1         1
# 5      19441  2016-08-09 08:27:58                                    neobux.com/m/l/               0         1
# 6      19441  2016-08-09 08:27:59                                    neobux.com/m/l/               0         1
# 7      19441  2016-08-09 08:28:01  http://new.enjoysurvey.com/ru/survey/649/index...              11         1
# 8      19441  2016-08-09 08:28:12                                        echo.msk.ru               1         1
# 9      19441  2016-08-09 08:28:15  neobux.com/m/l/?vl=A206591715C607425417A51CDE0...               2         1

**注:最初のURL検索new.enjoysurvey.com/...は、投稿されたデータに含まれていません。上記は、このURLをコードデモンストレーション用のデータ内のアイテムに変更します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

複数の条件でパンダのデータフレームをフィルタリングする

分類Dev

配列を含むパンダデータフレームのセルをフィルタリングする

分類Dev

差分条件でパンダデータフレームに値(日時)を書き込む

分類Dev

条件付きで行をフィルタリングするために膨大な数の行(パンダデータフレーム)を処理する

分類Dev

列の数でパンダdfをフィルタリングし、データを書き込みます

分類Dev

条件を連結してパンダデータフレームをフィルタリングする方法は?

分類Dev

変数を使用して複数の条件でデータフレームをフィルタリングするときのエラー(パンダ)

分類Dev

複数の条件をフィルタリングするパンダデータフレーム

分類Dev

条件に基づいてデータフレーム行をフィルタリングするパンダ

分類Dev

パンダ:データの種類でデータフレームをフィルタリングする

分類Dev

nullデータでパンダデータフレーム列をフィルタリングする

分類Dev

ヘッダーなしでパンダデータフレームをフィルタリングする方法

分類Dev

パンダのデータフレームをセルタイプでフィルタリングする

分類Dev

条件付きで要素をレンダリングするためのデータのフィルタリング

分類Dev

ラウンドロビンパターンでディレクトリにファイルを書き込む

分類Dev

パンダは、データフレームを書き込む前にcsvに詳細を追加する方法

分類Dev

複数の文字列を含むヘッダーでパンダデータフレーム列をフィルタリングする

分類Dev

パンダのデータフレームをリストでフィルタリングする

分類Dev

部分的なラベルでパンダのデータフレームをフィルタリングする方法

分類Dev

別の列の値に条件があるサブグループでパンダのデータフレームをフィルタリングする方法

分類Dev

Pythonで特定の列名でパンダデータフレームをフィルタリングする

分類Dev

パンダがcsvにデータフレーム列を書き込む

分類Dev

高速パンダデータフレームをpostgresに書き込む

分類Dev

パンダデータフレームをS3に書き込む

分類Dev

パンダのデータフレームをMySQLに書き込む

分類Dev

配列をフィルタリングするためにパンダデータフレームに条件を適用するときのFutureWarning

分類Dev

複数の列でパンダデータフレームをフィルタリングする方法

分類Dev

パンダ、列の値でデータフレームをフィルタリングする方法

分類Dev

パンダのデータフレーム行を複数の列値でフィルタリングする

Related 関連記事

  1. 1

    複数の条件でパンダのデータフレームをフィルタリングする

  2. 2

    配列を含むパンダデータフレームのセルをフィルタリングする

  3. 3

    差分条件でパンダデータフレームに値(日時)を書き込む

  4. 4

    条件付きで行をフィルタリングするために膨大な数の行(パンダデータフレーム)を処理する

  5. 5

    列の数でパンダdfをフィルタリングし、データを書き込みます

  6. 6

    条件を連結してパンダデータフレームをフィルタリングする方法は?

  7. 7

    変数を使用して複数の条件でデータフレームをフィルタリングするときのエラー(パンダ)

  8. 8

    複数の条件をフィルタリングするパンダデータフレーム

  9. 9

    条件に基づいてデータフレーム行をフィルタリングするパンダ

  10. 10

    パンダ:データの種類でデータフレームをフィルタリングする

  11. 11

    nullデータでパンダデータフレーム列をフィルタリングする

  12. 12

    ヘッダーなしでパンダデータフレームをフィルタリングする方法

  13. 13

    パンダのデータフレームをセルタイプでフィルタリングする

  14. 14

    条件付きで要素をレンダリングするためのデータのフィルタリング

  15. 15

    ラウンドロビンパターンでディレクトリにファイルを書き込む

  16. 16

    パンダは、データフレームを書き込む前にcsvに詳細を追加する方法

  17. 17

    複数の文字列を含むヘッダーでパンダデータフレーム列をフィルタリングする

  18. 18

    パンダのデータフレームをリストでフィルタリングする

  19. 19

    部分的なラベルでパンダのデータフレームをフィルタリングする方法

  20. 20

    別の列の値に条件があるサブグループでパンダのデータフレームをフィルタリングする方法

  21. 21

    Pythonで特定の列名でパンダデータフレームをフィルタリングする

  22. 22

    パンダがcsvにデータフレーム列を書き込む

  23. 23

    高速パンダデータフレームをpostgresに書き込む

  24. 24

    パンダデータフレームをS3に書き込む

  25. 25

    パンダのデータフレームをMySQLに書き込む

  26. 26

    配列をフィルタリングするためにパンダデータフレームに条件を適用するときのFutureWarning

  27. 27

    複数の列でパンダデータフレームをフィルタリングする方法

  28. 28

    パンダ、列の値でデータフレームをフィルタリングする方法

  29. 29

    パンダのデータフレーム行を複数の列値でフィルタリングする

ホットタグ

アーカイブ