2个excelA,B,都是1000行2列(a,b列),找出两个xls相同的a列并将A文件的b列对应到B文件中,求大神

1.给一个方便理解的小例子
A文件.
小明 香蕉
小刚 苹果
小美 黄瓜
B文件.
小六
小明
小美
老王

输出:
小六
小明 香蕉
老王
小美 黄瓜

大神快来解答~python,java,c语言都行

阅读 4k
3 个回答

在Excel中直接用公式就可以了

在B表的选择B1,输入“=HLOOKUP(A1,A!$A$1:$B$1000,2)”,按回车。

你需要先装这么几个modules

pip install pandas xlrd xlsxwriter

就你问题的举例, a.xlsx以及b.xlsx我放在本地G盘

clipboard.png

clipboard.png

然后上码

import pandas as pd


df1 = pd.read_excel("g:/a.xlsx", header=None)
df2 = pd.read_excel("g:/b.xlsx", header=None)
dic = dict(df1.get_values())
lst = (i[0] for i in df2.get_values())
new_dic = {}
for i in lst:
    if i in dic:
        new_dic[i] = dic[i]
    else:
        new_dic[i] = None
print(new_dic)
df = pd.DataFrame.from_dict(new_dic, orient='index')
writer = pd.ExcelWriter('out.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name="Sheet1", header=None)
writer.save()
# 输出
# {'小六': None, '老王': None, '小明': '香蕉', '小美': '黄瓜'}

最终out.xlsx结果如图

clipboard.png

解决思路就是把a中的两列按key-value组成一个dict, 然后用b列中的key去索引a中的value, 取不到的留空, 然后把新组合成的dict写入到excel文件中

pip install pandas xlrd xlsxwriter openpyxl


import pandas as pd

afile = "E:\\logs\\a.xlsx"
bfile = "E:\\logs\\b.xlsx"

dfa = pd.read_excel(afile, 0, header=None)
dfb = pd.read_excel(bfile, 0, header=None)

dfc = pd.merge(dfa, dfb, how="inner", on=0)
dfd = pd.merge(dfb, dfc, how="outer", on=0)

dfd.to_excel(bfile, header=False, index=False)

注意,是内存操作,一般的文件是没问题的,相比下 性能较高。大文件 可以分别取出 第一列,然后求交集,再填充值,再写文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题