【发布时间】:2020-06-07 13:35:03
【问题描述】:
所以我有一个数据框,可乐中的每一行都包含这样的字符串中的电影信息:
“The Shellshock (2014) 预算:35,000,000 发行日期:10/11/2014 屏幕尺寸:2515 增强版 1.1”
我试图在他们自己的列中提取预算和日期。预算可以从1,000,000到150,000,000并且日期是mm-dd-yyyy
第一个正则表达式是我创建的,但它返回的是 NaN 值:'(
第二个是我从 StackOverflow 尝试过的几个之一。它返回“错误的项目数通过 3,位置意味着 1”。所以它与其他数字匹配?
df['colb'] = df['cola'].str.extract(r'^\d{1,3}(,\d{3})(,\d{3})', expand=True)
df['colc'] = df['cola'].str.extract(r'^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$', expand=True)
非常感谢您对这些模式的任何帮助!
【问题讨论】:
-
您可以尝试不使用锚点
^和$但\d{1,3}(,\d{3})(,\d{3})也可以匹配超过 150,000,000 个 -
对于日期,
r'(?<!\d)((?:0?[1-9]|1[012])[- /.](?:0?[1-9]|[12][0-9]|3[01])[- /.](?:19|20)\d\d)(?!\d)'可以。r'(?<!\d)(\d{1,3}(?:,\d{3}){2,})(?!\d)'将用于预算数字。
标签: python regex pandas dataframe