在 Python 中匹配



我有两个excel文件。两个文件也有大约 200 000 行。(我只举六行例子。

文件1.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

文件2.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(在文件 1 中)和 N5(在文件 2 中)列相同。

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

输出.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,所以我不能编写详细的代码。

我该怎么做?我可以通过哪个代码获得它?

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

谢谢。

使用熊猫。

读取文件:

dfi = pandas.read_excel('myexcel_i')

使公共列(用作连接引用的列)成为数据帧索引:

dfi = dfi.set_index(my_column)

加入两个卓越

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')

注意:如果您按照@joaquin的回答中的说明使用set_index,则不需要上述排序操作...

在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 相关的功能时,这尤其好(因为它只是一个通过 python 控制 excel 的系统)。但是,您可能更喜欢...

  • 使用 XLRD 和 XLWT(相应地代表 excel-read 和 excel-write)。使用这些库,你可以用更简单的pythonic风格的语言读写excel,你也可以访问任何excel类型的文件(包括OpenOffice的"excel"表等)。

您应该明确查看这两个库的文档,但这里有一个简单的示例:

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

另外,查看此处的示例,并在谷歌上搜索一下以了解如何使用这些示例。

--

当你最终决定你想要采取的方法时,尽你最大的努力来解决它,如果你在代码上遇到问题,或者它不像你一样工作,回到这里SO,向我们展示你的代码,有人肯定会帮助你。祝你好运!

相关内容

  • 没有找到相关文章

最新更新