将美国金额提取到单独的列中

时间:2020-06-03 13:39:17

标签: python regex pandas dataframe pattern-matching

我正在尝试使用正则表达式从子字符串中提取美元金额。负数在字符串末尾带有“ CR”,表示负数。金额包含在一个单栏的csv文件中,标题为“说明”。以下是一些示例订单项:

CandleStickFeed

理想情况下,理想的结果是一个数据框,其中每个量都包含在带有以下标题的单独列中:“ Beg_bal”,“ Total_cr”,“ Total_db”,“ Net_ch”和“ Ending_bal” 我尝试了以下代码,但结果为“ nan”值:

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

在此先感谢您,一如既往的帮助。

2 个答案:

答案 0 :(得分:2)

您可以使用str.split,删除前2列,因为它们包含“帐户”和“总计”:并根据需要重命名剩余的列

df_ = df['description'].str.split('\s+', expand=True).iloc[:, 2:]
df_.columns = ['Beg_bal', 'Total_cr', 'Total_db', 'Net_ch', 'Ending_bal']
print (df_)
     Beg_bal      Total_cr      Total_db        Net_ch    Ending_bal
0  26,458.16  7,476,744.04  7,484,287.03    7,542.99CR     18,915.17
1  27,218.61  7,719,293.26  7,740,051.63   20,758.37CR      6,460.24
2        .00  7,634,750.07     39,055.35  7,595,694.72  7,595,694.72
3  64,249.00           .00     64,249.00   64,249.00CR           .00

答案 1 :(得分:0)

您可以这样做:

expand-archive -path 'c:\docs\test3.zip' -destinationpath 'test3_Folder'