多次拆分列中的字符串

时间:2018-08-13 16:28:47

标签: string pandas

我有一个DF,如下所示:

DF =

ID   T    R
1    A    ",Oa+,,Li+,,Wa+"
1    A    "Lo+,,Oa+,,Wa+"
1    A    ",Li+,,Wa+"

我想创建一个新列,其值从R开始,在句子的开头直到定界符“ +”,在定界符“,”之后的字符,直到定界符“ +”。含义:

DF_New =

ID   T    R                     Re
1    A    ",Oa+,,Li+,,Wa+"      Oa,Li,Wa
1    A    "Lo+,,Oa+,,Wa+"       Lo,Oa,Wa
1    A    ",Li+,,Wa+"           Li,Wa

我需要更改以下代码行才能做到这一点:

DF["Re"] = DF["R"].str.split('+').str[0]

2 个答案:

答案 0 :(得分:2)

根据您的示例,您可以使用str.findall查找所有字母字符串(使用与一个或多个单词字符匹配的正则表达式\w+),然后使用str.join来连接它们一起:

df['Re'] = df.R.str.findall('(\w+)').str.join(',')

>>> df
   ID  T               R        Re
0   1  A  ,Oa+,,Li+,,Wa+  Oa,Li,Wa
1   1  A   Lo+,,Oa+,,Wa+  Lo,Oa,Wa
2   1  A       ,Li+,,Wa+     Li,Wa

答案 1 :(得分:2)

如果仅需要剥离+,(或其他特定值),请使用agg

vals = '+,'
df.R.str.split(',').agg(lambda x: ', '.join(z.strip(vals) for z in x if z.strip(vals)))

0    Oa, Li, Wa
1    Lo, Oa, Wa
2        Li, Wa