シンプルにやるなら正規表現で調べることになります。が、正規表現でメールアドレスにマッチさせようとすると死ぬほど大変というか、厳密に正しいやり方は誰も知らないような問題です。
PHP - PHPで正規表現でmailを取り扱いたい|teratail
悪夢かいな。
なのでメールアドレスを表す現実的な正規表現(Qiita)を参考にやってみます。これはすべてのメールアドレスにはマッチしませんが、現実的にはこの程度で十分でしょ、というものです。
python
1>>> import pandas as pd
2>>> df = pd.DataFrame({"ID":[1001, 1002, 1003, 1004], "名前":["田中太郎", "山田太郎", "高橋太郎", "佐々木太郎"], "自己紹介":["~ ", "~ ", "~ 連絡先:aaabbb@abc.com ~ ", "~ bbbccc@cba.co.jp"]})
3>>> df["自己紹介"].str.contains(r"[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*")
40 False
51 False
62 True
73 True
8Name: 自己紹介, dtype: bool
どうやら判定はできているようなので、あとはint型に変換して新規列として入れてあげればよいかと。
python
1>>> df["列4"] = df["自己紹介"].str.contains(r"[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*").astype("int64")
2>>> df
3 ID 名前 自己紹介 列4
40 1001 田中太郎 ~ 0
51 1002 山田太郎 ~ 0
62 1003 高橋太郎 ~ 連絡先:aaabbb@abc.com ~ 1
73 1004 佐々木太郎 ~ bbbccc@cba.co.jp 1
pandas.Series.str.contains — pandas 0.25.3 documentation
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。