如何在整数的最后一个示例处拆分pandas字符串列?

k5ifujac  于 2023-05-05  发布在  其他
关注(0)|答案(1)|浏览(207)

我有一个包含字符串列的pandas数据集。单元格值由字母和数字组成,例如-'AB3 AB5 String'。我想在字符串中数字的最后一个示例处将其拆分为2列。基本上-〉'AB3 AB5''String'。另一个例子是将'CD4 String Text'拆分为'CD4''String Text'
我试过用

df['New Column'] = df['Orignal Column'].str.split(pat='\d', n= -1).str[2]

这给了我所需结果的后半部分(即我们示例中的'String'),而不是前半部分(即'String')。'AB3 AB5'),因为上面的代码在每个数字示例处进行拆分,我选择了这样创建的列表的第3个元素,这完成了一半的工作。我尝试使用上述代码的变体来获得前半部分,但没有获得所需的输出。

irtuqstp

irtuqstp1#

如果只需要后一个字符串,不要使用split,而是使用带有字符串结束锚($)的extract。分割更贵,之后还需要切片。

df = pd.DataFrame({'col': ['AB3 AB5 String', 'CD4 String Text']})

df['new'] = df['col'].str.extract(r'([^\d]+)$', expand=False)

如果你必须有一个数字,否则你不想匹配:

df['new2'] = df['col'].str.extract(r'\d\s*([^\d]+)$', expand=False)

输出:

col           new          new2
0   AB3 AB5 String        String        String
1  CD4 String Text   String Text   String Text
2        only text     only text           NaN

相关问题