比较熊猫系列中的元素后从列表中获取匹配的字符串

时间:2021-02-17 17:16:52

标签: python pandas

我想检查 Pandas DataFrame 列是否包含 List 对象中的关键字元素。如果列包含来自 List 对象的关键字,那么我想在 DataFrame 本身的新列中填充该 List 元素。

L = ['abc','pqr','xyz']

如果 DataFrame 是

Col1      Col2
'abc xyz' 
'pqr lmn'

我想将 DF 与 L 进行比较,并且当“abc xyz”包含 L 的元素(即“abc”)时,我想在 Col2 中填充“abc”。

你能帮我实现这个目标吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

这对你有用吗?

import pandas as pd

L = ['abc','pqr','xyz']
df = pd.DataFrame(['abc xyz', 'pqr lmn'], columns=['Col1'])

df['Col2'] = df['Col1'].str.findall('|'.join(L)).apply(lambda x: ' '.join(x))

给出:

>>> df
      Col1     Col2
0  abc xyz  abc xyz
1  pqr lmn      pqr

[编辑]

如果您只想要第一个匹配的关键字:

df['Col2'] = df['Col1'].str.findall('|'.join(L)).str[0]

给出:

>>> df
      Col1 Col2
0  abc xyz  abc
1  pqr lmn  pqr