0
正規表現の結果からパンダのデータフレームに新しい列を作成したいと思います。パンダ正規表現の関数
私は期待していた結果は次のとおりです。
In[1]: df
Out[1]:
valueProduct valueService totValue
0 $465580.99 $322532.34 $788113.33
マイデータフレームdtypesは以下のとおりです。
df.dtypes
Contracting Office Name object
Contracting Office Region object
PIID object
PIID Agency ID object
Major Program object
Description of Requirement object
Referenced IDV PIID object
Completion Date datetime64[ns]
Prepared By object
Funding Office Name object
Funding Agency ID object
Funding Agency Name object
Funding Office ID object
Effective Date datetime64[ns]
Fiscal Year int64
Ultimate Contract Value float64
Count int64
行1で「要件の説明」と題した列には、次の長い文字列値を持ちます(この列の同様の文字列の値は、データセット全体に渡って表示されます)
スチュアートスチールには、追加のボリュームと道路の変更が加えられています。スライドスライドの管理方法 - ALLEGHENY NATIONAL
VALUE OF PRODUCT = $465580.99
VALUE OF SERVICE = $322532.34
TOTAL VALUE OF CONTRACT = $788113.33
:私は正常にこの文字列から3つの項目を抽出だけ新しい列にドル値を生成するために正規表現を書きたい$ 788113.33
製品の森のVALUE = SERVICE OF $ 465580.99 VALUE =契約の$ 322532.34合計値=
text = "STEWARDSHIP ADD ADDITIONAL VOLUME AND ROAD WORK CHANGES SILVER SLIDE STEWARDSHIP PROJECT - ALLEGHENY NATIONAL FOREST VALUE OF PRODUCT = $465580.99 VALUE OF SERVICE = $322532.34 TOTAL VALUE OF CONTRACT = $788113.33"
pattern = re.compile('(VALUE OF PRODUCT).{1,3}\$\d*\.\d*', re.IGNORECASE)
getPattern = re.search(pattern, text)
print (getPattern.group())
生成します:
は、ここでデータフレームの外に、単純な文字列値をデータフレーム内の文字列をされたと仮定すると、これを行うためのコードです10
VALUE OF PRODUCT = $465580.99
他の2つの項目についてもこの操作を繰り返すことができます。今
、私は、次のような何かをしようとしたデータフレームに働いている意味:
def valProduct(row):
pattern = re.compile('(VALUE OF PRODUCT).{1,3}\$\d*\.\d*', re.IGNORECASE)
findPattern = re.search(pattern, row['Description of Requirement'])
return findPatter
df['valueProduct'] = df.apply(lambda row: valProduct(row), axis=1)
In[2]: sf[['valueProduct']][:1]
Out[2]: None
これは、新しい列が、その空を生成するが、最低で表示される必要があります。
VALUE OF PRODUCT = $465580.99
ご協力いただきありがとうございます。