我使用的正则表达式是\d+-\d+
,但我不太确定如何分隔罗马数字以及如何使用它们创建新列
我有以下数据集:
Date_Title Date Copies
05-21 I. Don Quixote 1605 252
21-20 IV. Macbeth 1629 987
10-12 ML. To Kill a Mockingbird 1960 478
12 V. Invisible Man 1897 136
基本上,我希望拆分“日期标题”,因此,当我打印一行时,我会得到以下结果:
('05-21 I', 'I', 'Don Quixote', 1605, 252)
或
('10-12 ML', 'ML', 'To Kill a Mockingbird',1960, 478)
第一位是数字,第二位是罗马数字;只有罗马数字,第三个是名称,第四个和第五个与数据集相同
关注字符串拆分:
我很确定可能会有一个更优化的解决方案,但这将是一个快速解决方案:
或:
你可以用
见regex demo详细信息:
^
-字符串的开头(\d+(?:-\d+)?\s*(M{0,4}(?:C[MD]|D?C{0,3})(?:X[CL]|L?X{0,3})(?:I[XV]|V?I{0,3})))
-第1组(“NumRoman”):\d+(?:-\d+)?
-一个或多个数字,后跟可选的-
序列和一个或多个数字\s*
-零个或多个空格(M{0,4}(?:C[MD]|D?C{0,3})(?:X[CL]|L?X{0,3})(?:I[XV]|V?I{0,3}))
-第2组(“罗马”):参见How do you match only valid roman numerals with a regular expression?了解解释\.
-一个点\s*
-零个或多个空格(.*)
-第3组(“名称”):除换行符以外的任何零个或多个字符,尽可能多注意}是必需的
df.pop('Date_Title')
删除Date_Title
列,并将其作为extract
方法的输入^如果需要保持原始列顺序,{相关问题 更多 >
编程相关推荐