DataFrame列の文字列を部分文字列に置き換えます

サイモンロジャース

DataFrameの列を部分文字列のリストの1つに一致させようとしています。

たとえばstrings、次の値を持つ列()を取得します。

text1C1
text2A
text2
text4
text4B
text4A3

そして、それらを次の部分文字列に一致させる新しい列を作成します。

vals = ['text1', 'text2', 'text3', 'text4', 'text4B']

私が現在持っているコードは機能しますが、問題を解決するための本当に非効率的な方法のようです。

df = pd.DataFrame({'strings': ['text1C1', 'text2A', 'text2', 'text4', 'text4B', 'text4A3']})


for v in vals:
        df.loc[df[df['strings'].str.contains(v)].index, 'matched strings'] = v

これにより、次のDataFrameが返されます。これが必要です。

   strings    matched strings
0  text1C1              text1
1   text2A              text2
2    text2              text2
3    text4              text4
4   text4B             text4B
5  text4A3              text4

特に大きなデータフレーム(1万行以上)の場合、これを行うためのより効率的な方法はありますか?

vals別の部分文字列でもある(text4の部分文字列であるtext4B項目の1つをどのように処理するかを考えることができません

ジェズリール

next最初の値を一致させるためにジェネレーターを使用します。

s = vals[::-1]
df['matched strings1'] = df['strings'].apply(lambda x: next(y for y in s if y in x))
print (df)
   strings matched strings matched strings1
0  text1C1           text1            text1
1   text2A           text2            text2
2    text2           text2            text2
3    text4           text4            text4
4   text4B          text4B           text4B
5  text4A3           text4            text4

可能であれば、より一般的な解決策。一致する値がなくiter、デフォルトのパラメータがnext

f = lambda x: next(iter(y for y in s if y in x), 'no match')
df['matched strings1'] = df['strings'].apply(f)

ソリューションを改善する必要があります。

for v in vals:
    df.loc[df['strings'].str.contains(v, regex=False), 'matched strings'] = v

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

BeautifulSoupの部分文字列を<tag>部分文字列</ tag>に置き換えます

分類Dev

部分文字列を配列の値に置き換えます

分類Dev

Cocoaの部分文字列を文字に置き換えます

分類Dev

文字列のリスト内の特定の部分文字列を別の部分文字列に置き換えます

分類Dev

Python Pandasは、列の部分文字列を別の列の部分文字列に置き換えます

分類Dev

colnamesをcolnameの部分文字列に置き換えます

分類Dev

部分文字列をsubsqueryの結果に置き換えます

分類Dev

文字列内の部分文字列を特定の値jQueryに置き換えます

分類Dev

bashcsvの列をその列の部分文字列に置き換えます

分類Dev

文字列内の部分文字列を選択的に置き換えます

分類Dev

文字列内の部分文字列をpythonに置き換えます

分類Dev

文字列内の文字列をそれらの文字列の部分文字列に置き換えます

分類Dev

文字の奇数長の部分文字列を置き換えます

分類Dev

部分文字列を特殊文字に置き換えます

分類Dev

部分文字列を変更する置換文字列に置き換えます

分類Dev

Mongo-配列の部分文字列を置き換えます

分類Dev

Javascript-文字列の部分文字列内の文字を置き換えます

分類Dev

文字列から部分文字列を置き換えます

分類Dev

文字列の配列からs部分文字列を置き換えます-Python

分類Dev

部分文字列を編集済みの部分文字列に置き換えます

分類Dev

(Javascript)文字列内の部分文字列を取得し、別の文字列に置き換えます

分類Dev

javascriptの部分文字列を複数回置き換えます

分類Dev

Sedは特定の部分文字列を置き換えます

分類Dev

JavaScripttd要素内の部分文字列を置き換えます

分類Dev

文字列c#のすべての部分文字列を置き換えます

分類Dev

Java文字列の特定の長さの部分文字列を置き換えます

分類Dev

ObjectiveCを使用して部分文字列を文字列に置き換えます

分類Dev

部分文字列を別の部分文字列に置き換えるpandaspython

分類Dev

C ++で指定された文字列の部分文字列を置き換えます

Related 関連記事

  1. 1

    BeautifulSoupの部分文字列を<tag>部分文字列</ tag>に置き換えます

  2. 2

    部分文字列を配列の値に置き換えます

  3. 3

    Cocoaの部分文字列を文字に置き換えます

  4. 4

    文字列のリスト内の特定の部分文字列を別の部分文字列に置き換えます

  5. 5

    Python Pandasは、列の部分文字列を別の列の部分文字列に置き換えます

  6. 6

    colnamesをcolnameの部分文字列に置き換えます

  7. 7

    部分文字列をsubsqueryの結果に置き換えます

  8. 8

    文字列内の部分文字列を特定の値jQueryに置き換えます

  9. 9

    bashcsvの列をその列の部分文字列に置き換えます

  10. 10

    文字列内の部分文字列を選択的に置き換えます

  11. 11

    文字列内の部分文字列をpythonに置き換えます

  12. 12

    文字列内の文字列をそれらの文字列の部分文字列に置き換えます

  13. 13

    文字の奇数長の部分文字列を置き換えます

  14. 14

    部分文字列を特殊文字に置き換えます

  15. 15

    部分文字列を変更する置換文字列に置き換えます

  16. 16

    Mongo-配列の部分文字列を置き換えます

  17. 17

    Javascript-文字列の部分文字列内の文字を置き換えます

  18. 18

    文字列から部分文字列を置き換えます

  19. 19

    文字列の配列からs部分文字列を置き換えます-Python

  20. 20

    部分文字列を編集済みの部分文字列に置き換えます

  21. 21

    (Javascript)文字列内の部分文字列を取得し、別の文字列に置き換えます

  22. 22

    javascriptの部分文字列を複数回置き換えます

  23. 23

    Sedは特定の部分文字列を置き換えます

  24. 24

    JavaScripttd要素内の部分文字列を置き換えます

  25. 25

    文字列c#のすべての部分文字列を置き換えます

  26. 26

    Java文字列の特定の長さの部分文字列を置き換えます

  27. 27

    ObjectiveCを使用して部分文字列を文字列に置き換えます

  28. 28

    部分文字列を別の部分文字列に置き換えるpandaspython

  29. 29

    C ++で指定された文字列の部分文字列を置き換えます

ホットタグ

アーカイブ