String 多次拆分列中的字符串

String 多次拆分列中的字符串,string,pandas,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

我有一个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]

根据您的示例,您可以使用
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

如果只需要剥离
+
(或其他特定值),请使用
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