如何在Pandas中创建条件文本列?

时间:2018-01-14 10:36:10

标签: python-3.x pandas

在Pandas Dataframe vinhos中,我有一个(很长的)文本列regiao。我想创建一个新列reg,其中包含local中找到的另一个Dataframe nomeregiao的所有元素。我正在使用此代码

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']])

当有元素时,它会重新出现空列。

你能帮帮我吗?

1 个答案:

答案 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