Python Pandas:部分文字列を検索してテーブルを検索する

sfactor

アプリのユーザーエージェント用の列を持つデータフレームがあります。私がする必要があるのは、この列から特定のアプリを識別することです。例えば、

NewWordsWithFriendsFree/2.3 CFNetwork/672.1.15 Darwin/14.0.0に分類されWords With Friendsます。

iPhone3,1; iPhone OS 7.1.2; com.fingerarts.sudoku2; 143441-1,24 will be Sudoku by FingerArts etc.

一致させる必要のある文字列を含む別のデータフレームがあります。例えば、

Keyword                 Game 
NewWordsWithFriends     Words With Friends
com.fingerarts.sudoku   Sudoku by FingerArts

パンダのデータフレームをこのように検索するにはどうすればよいですか?たとえば、データフレームは次のようなものです。

user    date                 user-agent
 A      2015-09-02 13:45:56  NewWordsWithFriendsFree/2.3 CFNetwork/672.1.15 Darwin/14.0.0
 B      2015-08-31 23:04:21  iPhone3,1; iPhone OS 7.1.2; com.fingerarts.sudoku2; 143441-1,24

GameNameルックアップ後に新しい列が必要です

chris-sc

これを達成するための1つの可能な方法は次のとおりです。

import pandas as pd                                                              

# some example data
qry = pd.DataFrame.from_dict({"Keyword": ["NewWordsWithFriends",                 
                                          "com.fingerarts.sudoku"],              
                              "Game": ["Words With Friends",                     
                                       "Sudoku by FingerArts"]})                 

df = pd.DataFrame.from_dict({"user-agent" : ["NewWordsWithFriendsFree/2.3 CFNetwork/672.1.15 Darwin/14.0.0",     
                                             "iPhone3,1; iPhone OS 7.1.2; com.fingerarts.sudoku2; 143441-1,24"]})

keywords = qry.Keyword.tolist()                                                  
games = qry.Game.tolist()                                                        

def select(x):                                                                   
    for key, game in zip(keywords, games):                                       
        if key in x:                                                             
            return game                                                          

df["GameName"] = df["user-agent"].apply(select)  

これにより、次のようになります。

In [41]: df
Out[41]: 
                                          user-agent              GameName
0  NewWordsWithFriendsFree/2.3 CFNetwork/672.1.15...    Words With Friends
1  iPhone3,1; iPhone OS 7.1.2; com.fingerarts.sud...  Sudoku by FingerArts

大規模なデータセットに対してこれを行う必要がある場合は、このソリューションのパフォーマンスをテストし、目的に十分な速度があるかどうかを確認する必要があります。

そうでない場合は、たとえば文字列のテスト方法を最適化してください。

考えられるすべてのゲームの外部ループを作成し、それを使用.applyして列ごとのゲームごとの結果を返すと、select()などへの各呼び出しですべてのゲームのループが回避されるため、処理が高速化されます

使用できるボトルネックを特定するにはline_profilerPythonコードを1行ずつプロファイリングするにはどうすればよいですか?を参照)。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonを使用して文字列内の部分文字列を検索する

分類Dev

Pythonで部分文字列の文字の順列を検索する

分類Dev

Pythonで300万レコードを介して部分文字列を検索

分類Dev

Pythonで特定の順序で部分文字列を検索する

分類Dev

Pythonで部分文字列を検索する

分類Dev

Pythonのfile.readlines()で部分文字列を検索する

分類Dev

Pythonは、部分文字列を使用して文字列内の文字列を検索します

分類Dev

部分文字列に基づいてログファイル内の特定の行を検索します-Python

分類Dev

部分文字列に基づいてログファイル内の特定の行を検索します-Python

分類Dev

Pythonで一致する部分部分文字列を検索する

分類Dev

Python:文字列のリストから部分文字列を検索します

分類Dev

Python 3は、部分文字列が続かない文字列を検索します

分類Dev

Pythonの文字列から複数の部分文字列を検索する

分類Dev

Python-可変数の部分文字列の間で文字列を検索する

分類Dev

Python-文字列内の部分文字列を検索します(コードが機能しません)

分類Dev

str.containsを使用して、Pythonでパンダを含む2つの部分文字列を検索します

分類Dev

Pythonで複数の部分文字列のリストを検索しますか?

分類Dev

Pythonリストで部分文字列を検索するときのNameError

分類Dev

Pythonデータフレーム列で「(」を含む部分文字列を検索する方法

分類Dev

Python3のbeautifulsoupで部分文字列を使用してhtmlタグを検索します

分類Dev

Python:ファイル内の正規表現を含む部分文字列を検索する

分類Dev

Pythonで部分文字列の後の行の終わりまでのテキストを検索します

分類Dev

Pythonで特定の文字で開始および終了する文字列内の部分文字列のインデックスを検索して出力します

分類Dev

最初の部分文字列の後にスペースがある場合、Pythonで2つの部分文字列の間の文字列を検索する

分類Dev

Python正規表現のサーバー制約を満たす二重引用符で囲まれたすべての部分文字列を検索します

分類Dev

文字列pythonで最長の一意の部分文字列を検索します

分類Dev

Pythonを使用してテキスト内の文字列を検索する

分類Dev

Python:文字列内の部分文字列を検索し、部分文字列のインデックスを返します

分類Dev

Python正規表現は、部分文字列と最初のスペースの間のすべてを検索します

Related 関連記事

  1. 1

    Pythonを使用して文字列内の部分文字列を検索する

  2. 2

    Pythonで部分文字列の文字の順列を検索する

  3. 3

    Pythonで300万レコードを介して部分文字列を検索

  4. 4

    Pythonで特定の順序で部分文字列を検索する

  5. 5

    Pythonで部分文字列を検索する

  6. 6

    Pythonのfile.readlines()で部分文字列を検索する

  7. 7

    Pythonは、部分文字列を使用して文字列内の文字列を検索します

  8. 8

    部分文字列に基づいてログファイル内の特定の行を検索します-Python

  9. 9

    部分文字列に基づいてログファイル内の特定の行を検索します-Python

  10. 10

    Pythonで一致する部分部分文字列を検索する

  11. 11

    Python:文字列のリストから部分文字列を検索します

  12. 12

    Python 3は、部分文字列が続かない文字列を検索します

  13. 13

    Pythonの文字列から複数の部分文字列を検索する

  14. 14

    Python-可変数の部分文字列の間で文字列を検索する

  15. 15

    Python-文字列内の部分文字列を検索します(コードが機能しません)

  16. 16

    str.containsを使用して、Pythonでパンダを含む2つの部分文字列を検索します

  17. 17

    Pythonで複数の部分文字列のリストを検索しますか?

  18. 18

    Pythonリストで部分文字列を検索するときのNameError

  19. 19

    Pythonデータフレーム列で「(」を含む部分文字列を検索する方法

  20. 20

    Python3のbeautifulsoupで部分文字列を使用してhtmlタグを検索します

  21. 21

    Python:ファイル内の正規表現を含む部分文字列を検索する

  22. 22

    Pythonで部分文字列の後の行の終わりまでのテキストを検索します

  23. 23

    Pythonで特定の文字で開始および終了する文字列内の部分文字列のインデックスを検索して出力します

  24. 24

    最初の部分文字列の後にスペースがある場合、Pythonで2つの部分文字列の間の文字列を検索する

  25. 25

    Python正規表現のサーバー制約を満たす二重引用符で囲まれたすべての部分文字列を検索します

  26. 26

    文字列pythonで最長の一意の部分文字列を検索します

  27. 27

    Pythonを使用してテキスト内の文字列を検索する

  28. 28

    Python:文字列内の部分文字列を検索し、部分文字列のインデックスを返します

  29. 29

    Python正規表現は、部分文字列と最初のスペースの間のすべてを検索します

ホットタグ

アーカイブ