Pandas,结构提取物多表达式错误ValueError:传递的项数错误5,placement暗示1

2024-05-16 06:50:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用熊猫结构提取物方法,并通过“|”在模式中使用了多个正则表达式。结构提取物似乎不喜欢多个正则表达式。如何将“or”与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中,它说“一个有两个组的模式将返回一个有两列的数据帧。不匹配的将是NaN。“但是我想把所有五个的输出都保存在一个列中,因为我只是从我的数据集的混乱中提取好数据。我怎样才能做到?你知道吗


Tags: or数据方法dfstring模式extractwindow
1条回答
网友
1楼 · 发布于 2024-05-16 06:50:10

所以我现在可以用了。我对这个问题有点误解,但是打印这个变量我可以看到结构提取物当我试图分配给df时,发现不匹配。你知道吗

我调整了这个代码以分配给变量t

t = df['Release_Date'].str.extract('(?:.*\:\s)(.*)\\r|(^\d{2}\/\d{2}\/\d{4})|(^\d{2}\/\d{2}\/\d{4}\*)|\\r(\d{2}\/\d{2}\/\d{4})') 
print(t)

这是t的输出

enter image description here

这是我用来解决这个问题的代码。你知道吗

df['Part_b_window'] = t[0].fillna(t[1]).fillna(t[2]).fillna(t[3]).fillna(t[4]).fillna('Miscellaneous')

问题解决了。你知道吗

相关问题 更多 >