我有两个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,向我们展示你的代码,有人肯定会帮助你。祝你好运!