获取列daframe中具有给定delimeter的所有项的子字符串

2024-05-15 14:17:58 发布

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

我有一个列中包含字符串的数据帧

df=pd.DataFrame({'Col1':['asa asas s','qw wewe de','ewew ewe ww']})

我需要将这个字符串从第一个空格字符拆分为2。因此,生成的数据框应该有两个附加列

Col1            Part1       Part2
asa asas s      asa         asas s
qw wewe de      qw          wewe de
ewew ewe ww     ewew        ewe ww

我尝试获取索引并使用python子字符串,如下所示:

df['ColIdx']=df.Col1.str.find(' ')
df['Part1']=df.Col1[:df.CityIdx]
df['Part2']=df.Col1[df.CityIdx:]

不幸的是,我在第1部分得到了“不能用这些索引器对RangeIndex进行切片索引”。正确的方法是什么


Tags: 数据字符串dfdecol1part2part1ww
3条回答

通过使用.str方法在“”上拆分以使用序列上的字符串属性,然后从每个拆分的字符串返回第0个元素,您可以轻松获得part1:

df['Part1'] =  df.Col1.str.split(" ").str[0]

然后是第二部分。仍在“”上拆分,但引用元素“1:”以获取所有其他元素。然后可以使用str.join()将其余元素放回一个字符串中:

df['Part2'] =  df.Col1.str.split(" ").str[1:].str.join(" ")

让我们试试split

df = df.join(df.Col1.str.split(' ', 1, expand=True))|

更新并检查名称

df[['part1','part2']] = df.Col1.str.split(' ', n=1, expand=True)

我们可以在这里使用str.replace

df['Part1'] = df['Col1'].str.replace('^(\w+)\b.*$', '\\1')
df['Part2'] = df['Col1'].str.replace('^\w+\s*', '')

相关问题 更多 >