【发布时间】:2020-09-22 05:41:01
【问题描述】:
我正在尝试使用正则表达式从子字符串中提取以美元计价的金额。负数在字符串末尾有一个“CR”,表示负值。金额包含在标题为“描述”的单列 csv 文件中。以下是一些示例订单项:
description
Account Total: 26,458.16 7,476,744.04 7,484,287.03 7,542.99CR 18,915.17
Account Total: 27,218.61 7,719,293.26 7,740,051.63 20,758.37CR 6,460.24
Account Total: .00 7,634,750.07 39,055.35 7,595,694.72 7,595,694.72
Account Total: 64,249.00 .00 64,249.00 64,249.00CR .00
理想的结果将是一个数据框,其中每个金额包含在具有以下标题的单独列中:“Beg_bal”、“Total_cr”、“Total_db”、“Net_ch”和“Ending_bal” 我已经尝试了以下代码,但它导致了“nan”值:
pat=r'^(?P<Beg_bal>\$?(?:\d+,)*\d+\.\d+)\s+(?P<Total_cr>\$?(?:\d+,)*\d+\.\d+)\s+(?P<Total_db>\$?(?:\d+,)*\d+\.\d+)\s+(?P<Net_ch>\$?(?:\d+,)*\d+\.\d+)\s+(?P<Ending_bal>\$?(?:\d+,)*\d+\.\d+)'
df[['Beg_bal','Total_cr','Total_db','Net_ch','Ending_bal']]=df['description'].str.extract(pat)
在此先感谢,非常感谢任何帮助。
【问题讨论】:
-
是来自 csv 文件吗?
-
是的,所有行都包含在一个单列 csv 文件中
标签: python regex pandas dataframe pattern-matching