【发布时间】:2020-10-09 22:49:57
【问题描述】:
之前有人问过这个问题,但我仍然无法完全完成这项工作。我有以下字符串示例:
"Transfer to Retirement Rsvs-MA FX .11"
"Opening Balance FX 342,536,002.63"
"VA 85.85"
"VB .00"
"Manual Adjustment FX 6,838.36-"
我想将字符串中的美元/美分金额提取到数据框的单独列中。我有以下正则表达式:
rx = (r"(\$?(?:\d+,)*\d+\.\d+\-?)")
我尝试在数据框 (df) 中创建一个名为“dollars”的列
df2['dollars']=df2['description'].str.extract(rx)
它在大多数情况下都有效,除了 .11 或 .00 之类的值,在这种情况下会返回 nan。如何修改此表达式以使其适用于美分而不用领先美元?
非常感谢您的帮助!
string dollars
Transfer to Retirement Rsvs-MA FX .11 0.11
Opening Balance FX 342,536,002.63 342,536,002.63
VA 85.85 85.85
VB .00 .00
Manual Adjustment FX 6,838.36- 6,836-
【问题讨论】:
-
试试
r'\$?(?<!\d)(?:\d{1,3}(?:,\d{3})*|\d{4,})?\.?\d+',见regex demo。 -
@Wiktor Stribiżew 谢谢!这有效!
标签: python regex pandas dataframe match