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