4

我有两个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(in file1) 和 N5(in file2) 列相同。

根据 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,所以我无法编写详细的代码。

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

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

谢谢。

4

3 回答 3

3

使用熊猫。

读取de文件:

dfi = pandas.read_excel('myexcel_i')

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

dfi = dfi.set_index(my_column)

加入两个擅长

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

保存到新文件:

df.to_excel('myfile.xlsx')
于 2013-11-02T13:47:33.893 回答
1

使用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注意:如果您按照@joaquin 的回答中的说明使用,则不需要上述排序操作...

于 2013-11-02T13:51:50.920 回答
0

在python中处理excel文件,一般有两种方法:

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

基本过程很容易理解,如下所示:

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

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

--

当您最终决定要采用的方法时,尽最大努力解决它,如果您的代码有问题或者它不能像您一样正常工作,请回到这里,向我们展示您的代码,然后有人一定会帮助你。祝你好运!

于 2013-11-02T12:54:07.837 回答