【发布时间】:2021-02-22 17:27:33
【问题描述】:
我有两个数据集,qlik_clean 和 synapse_clean。 Qlik_clean 包含 1 列字符串类型 (col= field), synapse_clean 包含 2 列 (cols= field, model),两者都是字符串类型。
我的目标是比较并找出 qlik_clean 中 col 字段的哪些行也在 synapse_clean 的 col 字段中,并返回 true 或该特定行的 col 模型的值。
我尝试过使用 pandas 和 lambda 函数,但没有成功。我已将 df 转换为 dict 并从那里开始,但也没有成功。
有人可以帮我指出正确的方向吗?我的代码在下面,我还没有添加任何比较逻辑,有人知道这里的路吗?
亲切的问候,
罗格
import pandas as pd
import openpyxl
import re
#open synapse fields file
synapsefilepath = ''
synapse = pd.read_excel(synapsefilepath, engine='openpyxl')
#create df from synapse file
synapse_df = pd.DataFrame(synapse)```
#transform fields into list
synapse_dict = synapse_df.to_dict('list')
#all keys and values to lower
synapse_clean = {k.lower(): str(v).lower() for k, v in synapse_dict.items()}
##### QLIK FILE #######
#open qlik file
qlikfilepath= ''
qlik = pd.read_excel(qlikfilepath, engine='openpyxl', sheet_name='qliksynapsecomp')
#create df from excel file and keep only qlikfieldname and insynapse
qlik_df = pd.DataFrame(qlik)
qlik_df_trunc = qlik_df[['field']]
#transform fields into list
qlik_dict = qlik_df_trunc.to_dict('list')
#lowercase all keys and values
qlik_clean = {ke.lower().strip(): str(va).lower().strip() for ke, va in qlik_dict.items()}
【问题讨论】:
标签: python pandas dataframe vlookup string-comparison