【发布时间】:2020-04-22 12:06:50
【问题描述】:
我正在使用 pandas str.extract 方法,并通过“|”在模式中使用了多个正则表达式。 str.extract 似乎不喜欢一个以上的正则表达式。如何将“或”与提取物一起使用?
这是数据的摘录:-
Window
13/01/2020 - AM
10/01/2020
06/01/2020 -\r10/01/2020
08/01/2020 - AM
02/12/2019 -\r17/01/2020
20/01/2020 -\r21/01/2020
09/01/2020 - AM
这里是代码:-
part_b = df.loc[df['Release_Date'].str.contains("Part B")]
regex_string = '(^\d{2}\/\d{2}\/\d{4}\s\-)\\r(\d{2}\/\d{2}\/\d{4})|(^\d{2}\/\d{2}\/\d{4})|[A]:\s(\d{2}\/\d{2}\/\d{4})\s\w{2}\\r\w{4}\s[B]:\s(\d{2}\/\d{2}\/\d{4})'
df['Part_b_window'] = part_b['Window'].str.extract(regex_string)
错误:-
ValueError: Wrong number of items passed 5, placement implies 1
请注意,在测试 here 时,正则表达式工作正常。
现在在 docs 中它说“一个包含两个组的模式将返回一个包含两列的 DataFrame。不匹配的将是 NaN。”但我想保留所有五个的输出在一列中,因为我只是从我的数据集的混乱中提取好的数据。请问我该怎么做?
【问题讨论】:
-
“帕特”是什么意思? (第一句)。
-
对不起,'正则表达式模式'。
-
所以我找到了这个解决方案,但似乎有点啰嗦。解决方案是输出到多个列,然后使用 where 方法合并回来。 link
标签: python regex pandas dataframe extract