Python - 根据另一个数据框中的列编辑和替换数据框中的列值

问题描述 投票:0回答:1

我是Python新手,遇到了一个问题。

df1 = pd.DataFrame({'col1': ['apple', 'banana', 'cherry', 'apple', 'cherry']})
df2 = pd.DataFrame({'col1': ['app Banana', 'Cherry', 'banana', 'apple', 'bnapple', 'apple ch']})

假设我有 df2 和 df1,它们具有 col1 值。 df1 具有正确的全名,但可能有重复项(由于其他 col 数据不同,我需要将其保留在两个数据框中)。

df2 有错误的名称或不正确的大小写,我想纠正。我希望 df2 列反映 df1 col 所说的内容。 df2 的结果列将是 -

df2 = pd.DataFrame({'col1': ['banana', 'cherry', 'banana', 'apple', 'apple', 'apple']})

蒂亚!

我不知道该怎么做。我尝试了数据帧的合并查询,但这只是给出了 df1 + df2 中的所有内容。

python pandas dataframe merge multiple-columns
1个回答
0
投票

根据

df1
extract
制作正则表达式
df2
:

import re
pat = '(%s)' % '|'.join(map(re.escape, df1['col1'].unique()))
# '(apple|banana|cherry)'

df2['out'] = df2['col1'].str.extract(pat, flags=re.I, expand=False)

# variant to have lowercase
df2['out2'] = df2['col1'].str.casefold().str.extract(pat, flags=re.I, expand=False)

输出:

         col1     out    out2
0  app Banana  Banana  banana
1      Cherry  Cherry  cherry
2      banana  banana  banana
3       apple   apple   apple
4     bnapple   apple   apple
5    apple ch   apple   apple
© www.soinside.com 2019 - 2024. All rights reserved.