我已经非常接近解决这个问题,但最终的结果总是缺少一些信息。
我想从查找文件中获取具有代码 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/