在Python中匹配

我有两个excel文件。 两个文件也有大约20万行。 (我只举了六行例子。)

file1.xlsx

M1 M2 M3 M4 97.1859 -59.1873 0.000912 4.55 63.116 -75.958 0.003797 20.85 112.09 -22.9276 0.005008 2.26 320.7931 -63.4153 0.008382 7.45 337.8978 -72.8617 0.009965 3.88 99.2183 -56.5418 0.018141 18.17 

file2.xlsx

  N1 N2 N3 N4 N5 N6 0.057 4 Im 6.61 0.005008 38.85929 0.065 36 Im 9.27 0.003797 -19.4988 0.062 68 Im 8.06 0.008382 -51.8935 0.066 46 Im 8.55 0.009965 -40.5912 Im 9.1 0.000912 1.089013 0.075 32 Im 12.31 0.018141 3.946489 

M3(在file1中)和N5(在file2中)列相同。

根据M3-N5列,我想匹配这两个文件,并在Python中创build第三个文件(输出文件)。

output.xlsx

  M1 M2 M3-N5 M4 N1 N2 N3 N4 N5 97.1859 -59.1873 0.000912 4.55 Im 9.1 1.089013 63.116 -75.958 0.003797 20.85 0.065 36 Im 9.27 -19.4988 112.09 -22.9276 0.005008 2.26 0.057 4 Im 6.61 38.85929 320.7931 -63.4153 0.008382 7.45 0.062 68 Im 8.06 -51.8935 337.8978 -72.8617 0.009965 3.88 0.066 46 Im 8.55 -40.5912 99.2183 -56.5418 0.018141 18.17 0.075 32 Im 12.31 3.946489 

我在一个名为TOPCAT的程序中做了,但是我想用Python做比较。 不过,我已经开始使用新的Python,所以我不能写详细的代码。

我怎样才能做到这一点? 我可以通过哪些代码?

任何帮助或build议将不胜感激。

谢谢。

使用pandas。

读de档案:

 dfi = pandas.read_excel('myexcel_i') 

将公共列(用作连接引用的列)作为数据框索引:

 dfi = dfi.set_index(my_column) 

join两个优秀

 df = pandas.concat([df1, df2], axis=1) 

保存到一个新的文件:

 df.to_excel('myfile.xlsx') 

使用pandas你可以做这个任务,如:

 import pandas as pd df1 = pd.read_excel('file1.xlsx', 'Sheet1') df1.sort(columns='M3') df2 = pd.read_excel('file2.xlsx', 'Sheet1') df2.sort(columns='N5') df3 = pd.concat((df1, df2), axis=1) df3 = df3.sort(axis=1) df3.to_excel('output.xlsx') 

注意:如果您使用set_index ,则不需要上面的sorting操作,如@ joaquin的答案中所述…

处理python中的excel文件,通常有两种方法:

  • 使用win32com。 这是一个用于控制Windows程序的API,如Excel,Word,Outlook等

基本过程很简单,看起来像这样:

 import win32com.client excel = win32com.client.Dispatch('Excel.Application') 

从那里你可以使用Excel本地命令,如:

 excel.Visible = True #show the excel excel.Workbooks.Add() #open a workbook print excel.Cells(1, 1).Value #print the value of a cell at position 1, 1 

当你需要使用一些与excel相关的function(因为它只是一个通过python控制excel的系统)时,这是特别好的。 不过,你可能更喜欢…

  • 使用xlrd和xlwt(相应地表示excel-read和excel-write)。 使用这些库可以读取和写入更容易的pythonic风格的语言,也可以访问任何exceltypes的文件(包括OpenOffice的Excel表格等)。

你应该明确地检查两个库的文档 ,但这里有一个简单的例子:

 import xlrd workbook = xlrd.open_workbook('my_workbook.xls') worksheet = workbook.sheet_by_name('Sheet1') 

另外,看看这里的例子 ,谷歌了一下,学习如何使用这些。

当你最终决定要采取的方法时,尽最大努力解决问题,如果你在代码方面有问题,或者你的工作不像你的例外,那么回到这里,告诉我们你的代码,将明确帮助你。 祝你好运!