ホーム>source

私はあらゆる場所を検索してきましたが、まだ解決策を見つけていません... したがって、たとえば、データフレームには、ペネロペディーン、コリンインMパーセル、サリーシーボーン、テレサTアランダなどの名前のリストがあります。 私の現在の正規表現は

ウィズウィズ

名前のほとんどをキャッチします。ただし、データフレームには、「XXXのライセンスされた不動産、YYYのデジタルマーケティング担当者」などの行もあります。また、上記のRegexは「Licensed Real Estate」と「Digital Marketer」もキャッチします。名前のみの行のみを選択したいのですが、どうすればよいですか? "at"という単語を含む単語をキャッチしないように正規表現をどうにかして記述できますか?

+++

だから私はたった1列と多くの行のデータフレームに取り組んでいます、 データフレームは次のようになります。

<前>ウィズウィズ

出力は

<前>ウィズウィズ

そして私は次のように期待しています:

<前>ウィズウィズ ^[A-Z][a-z]+,?\s+(?:[A-Z][a-z]*\.?\s*)?[A-Z][a-z]+
あなたの答え
  • 解決した方法 # 1

    重要なのは、値が名前であるかどうかを決定するものとそうでないものを決定することです。

    あなたの例から、それは 'Penelope Deans''Corinne M. Percell'  そして 'Tereasa T.'  名前ですが、 '1/1/2020'  ない(数字とスラッシュがあるため)と 'Digital Marketer at XXX'   <namelike> at <namelike> というパターンに従うため、どちらでもありません 。

    これらのルールの下で、 'John at Smith'  名前にもなりません。しかし、 'at'は英語では通常の助詞ではないため、機能するはずであり、外国の名前を具体的にカバーする必要はありません(それでも、名前に 'at'はまれです)。

    正規表現を使用したPythonのソリューション:

    <前>ウィズウィズ

    結果:

    <前>ウィズウィズ import pandas as pd lst = [ 'Penelope Deans', '1/1/2020', 'Digital Marketer at XXX', 'Corinne M. Percell', '1/1/2020', 'Tereasa T.', 'Licensed Real Estate at YYY' ] df = pd.DataFrame(lst) df = df[df[0].str.match('^((?! at )[A-z\s\.])+$')] print(df)

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ vba - 列に数字を追加する