私はいくつかの価格設定データをpandasデータフレームに読み込みました。値は次のように表示されます。
$40,000*
$40000 conditions attached
数値だけにしたいです。ループして正規表現を適用できることを知っています
[0-9]+
各フィールドに結果のリストを結合しますが、ループしない方法はありますか?
ありがとう
import pandas as pd
df = pd.DataFrame(['$40,000*','$40000 conditions attached'], columns=['P'])
print(df)
# P
# 0 $40,000*
# 1 $40000 conditions attached
df['P'] = df['P'].str.replace(r'\D+', '').astype('int')
print(df)
利回り
P
0 40000
1 40000
\D
は、任意の 10進数字以外 と一致します。
パンダの置換メソッドを使用できます。また、千単位の区切り記号「、」と小数点以下の桁区切り記号「。」を保持することもできます。
import pandas as pd
df = pd.DataFrame(['$40,000.32*','$40000 conditions attached'], columns=['pricing'])
df['pricing'].replace(to_replace="\$([0-9,\.]+).*", value=r"\1", regex=True, inplace=True)
print(df)
pricing
0 40,000.32
1 40000
これには正規表現は必要ありません。これは動作するはずです:
df['col'] = df['col'].astype(str).convert_objects(convert_numeric=True)