在Pandas Dataframe vinhos
中,我有一个(很长的)文本列regiao
。我想创建一个新列reg
,其中包含local
中找到的另一个Dataframe nome
列regiao
的所有元素。我正在使用此代码
local['nome']
0, Vinho Verde
1, Minho
...
4, Douro
5, Porto
vinhos['regiao']
...
232, Douro tinto 2014
...
vinhos['reg']
Douro
vinhos['reg'] = ','.join([r for r in local['nome'] if r in vinhos['regiao']])
当有元素时,它会重新出现空列。
你能帮帮我吗?
答案 0 :(得分:1)
我认为word boundary
+ str.findall
需要str.join
:
print (vinhos)
regiao
232 Douro tinto 2014
233 Vinho Verde Douro new
pat = '|'.join([r'\b{}\b'.format(x) for x in local['nome'].tolist()])
vinhos['reg'] = vinhos['regiao'].str.findall(pat).str.join(',')
print (vinhos)
regiao reg
232 Douro tinto 2014 Douro
233 Vinho Verde Douro new Vinho Verde,Douro