python - 如何从一个表中删除所有出现的数字,并从另一个表中查找数字?

标签 python excel python-3.x pandas

我已经非常接近解决这个问题,但最终的结果总是缺少一些信息。

我想从查找文件中获取具有代码 ESBK022、ESBK023 或 ESBK024 的每个引用号,然后从主文件中删除该引用号的每个实例。

在主文件中,没有重复的引用编号,因为显示代码仅出现在查找文件中。

这是我想要完成的事情:

主文件:

REFERENCE NUMBER     DISPLAY CODE
      1922              ESBK022
      1923              ESBK023
      1924              ESBK022
      1925              ESBK024
      1922              IATL123
      1922              AUXT876

查找文件:
REFERENCE NUMBER
      1922
      1923
      1924
      1925
      1926
      1927

最后结果:
REFERENCE NUMBER
      1926
      1927

这是我的代码:
import pandas as pd


excel1 = 'desktop/lookup.xlsx'
excel2 = 'desktop/mainfile.xlsx'

#Delete top 3 blank rows of main file and last two summary rows
df1 = pd.read_excel(excel1, header=3)
df1 = (df1[:-2])

df2 = pd.read_excel(excel2)


#finds all reference numbers that have the ESBK code
has_code = df1[(df1['DISPLAY CODE'] == 'ESBK022') | (df1['DISPLAY CODE'] == 'ESBK023')
              | (df1['DISPLAY CODE'] == 'ESBK024')]

这部分我玩了很多。现在这只会导致表格仅显示具有 ESBK 代码的引用编号,而不是相反。
#copies merged table layout to setup concatenation
merge_codes = pd.merge(has_code, df2, on="REFERENCE NUMBER")

merge_codes.to_excel('Desktop/ExcelTest.xlsx',sheet_name='DATA', index=False)

最佳答案

利用:

l=df1.loc[df1['DISPLAY CODE'].isin(['ESBK022','ESBK023','ESBK024']),'REFERENCE NUMBER'].tolist()
df2[~df2['REFERENCE NUMBER'].isin(l)]

输出:
   REFERENCE NUMBER
4              1926
5              1927

关于python - 如何从一个表中删除所有出现的数字,并从另一个表中查找数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185620/

相关文章:

python - 通过 Python 中的索引列表访问 Matrix 的元素,以在没有 for 循环的情况下将 max(val, 0.5) 应用于每个值

python - 如何将二进制 dat 文件 (.dat) 保存为 png 或 jpg 格式?

python - 如何在Python AWS CDK中使用内部函数?

vba - 在 VBA 中将列范围复制到单个系列中

vba - 月函数在 VBA 帮助文件中的示例代码上引发类型不匹配

mysql - 使用 VBA 连接 WAMP MySQL

python-3.x - 防止 Tkinter Text 小部件在字体更改时调整大小

python - 如何去除 wx.Notebook 中的边框

java - 有没有办法检查文档中是否存在标签名称? (DOM - Jython)

python - 在 pyproject.toml 中连接 2 个数组