String 多次拆分列中的字符串
我有一个DF,如下所示: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 =
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