pandasのapply関数を利用したい

前提

pandasのapply関数を使って、csvで含まれている電話番号の例を
正規表現に変換したいです。
phonenumbersを利用すると下記のように正規表現へ変更できます。

#関数なしで電話番号変更 tel = '473151123' tel_hyphen = phonenumbers.parse(tel, 'JP') tel=phonenumbers.format_number(tel_hyphen, phonenumbers.PhoneNumberFormat.NATIONAL) print(tel) 047-315-1123

csv

電話番号 473151123 473222222 922312129

実現したいこと

phonenumbersを利用して関数を作成してpandasの列にて全ての電話番号を変更したいです。

電話番号 047-315-1123 047-322-2222 092-231-2129

エラーメッセージが表示されます。

エラーメッセージ sys:1: DtypeWarning: Columns (43,53) have mixed types.Specify dtype option on import or set low_memory=False. Traceback (most recent call last): File "c:\Users\test\telephone.py", line 26, in <module> df['電話番号'] = df['電話番号'].apply(Tel) phonenumbers.phonenumberutil.NumberParseException: (1) The string supplied did not seem to be a phone number.

該当のソースコード

import pandas as pd import re import phonenumbers # #ファイル名 filename1=r"c:\Users\test\telephone.py" #csv読み込みdtype=objectと指定 df = pd.read_csv(filename1) #関数なしで電話番号変更 # tel = '922312129' # tel_hyphen = phonenumbers.parse(tel, 'JP') # tel=phonenumbers.format_number(tel_hyphen, phonenumbers.PhoneNumberFormat.NATIONAL) # print(tel) #電話番号の関数作成 def Tel(x): tel = x tel_hyphen = phonenumbers.parse(tel, 'JP') tel=phonenumbers.format_number(tel_hyphen, phonenumbers.PhoneNumberFormat.NATIONAL) return tel #電話番号の列へ挿入 df['電話番号'] = df['電話番号'].apply(Tel)

試したこと

上記のコードで試してみましたが、上記のエラーが表示され
関数で変換可能できないです。

関数で変換もしくは他の方法で可能でしょうか。

お手数ですが、よろしくおねがいします。

コメントを投稿

0 コメント