【问题标题】:Matching values in 2 excel sheets of a workbook using pandas and openpyxl使用 pandas 和 openpyxl 匹配工作簿的 2 个 excel 表中的值
【发布时间】:2020-06-23 19:59:27
【问题描述】:

我的 xlsx 文件中有 2 张工作表。该文件存储在本地。当我打印行和列时,我得到了输出。我想要的是,如果“患者信息”表的第一列(患者 ID)中的任何值与“记录”表的第一列(p id)中的任何值匹配,那么我想从“记录”表中附加该单元格值到列表 c 并打印所有匹配值列表。但是当我运行我的代码时,不会生成任何输出,甚至在运行时也没有显示错误或警告。请找到附加的数据集。patients dataset

import openpyxl
import pandas as pd

filename="week_05_homework_XLSX_openpyxl.xlsx"
wb= openpyxl.load_workbook(filename)
sheet1=wb['patient info']
sheet2=wb['records']
df1= pd.DataFrame(sheet1.values)
df2= pd.DataFrame(sheet2.values)
p=len(df1.index)
q=len(df2.index)
c =[]
for i in range(2,p):
    for j in range(2,q):
        if df1.iloc[i,1]==df2.iloc[j,1]:
            c.append((df2.iloc[j,1]))
            print(c)

【问题讨论】:

  • 您好。从您的代码中,您不需要 openpyxl,您可以直接通过 pandas 读取数据,然后比较相关列。请分享一些您的数据,有人可能会看一下。请不要照片,只有数据。看看这个以获得更多指导:stackoverflow.com/questions/20109391/…
  • 你好 sammy,根据我们的任务,必须使用 openpyxl 来阅读 notebook。请找到共享的数据集。

标签: python-3.x pandas openpyxl


【解决方案1】:

如果您只是尝试从两个数据帧中获取公共 ID,则仅使用交集运算来查找公共 ID 可能会更快、更清晰。这个答案可能会有所帮助:

如果没有,您可以随时打印它们,然后打印公共 ID 作为结尾。

一种方法是将 ID 设置为索引,然后:

common_ids = df1.index.intersection(df2.index)
c = records.iloc[common_ids,:]

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多