2017-04-13 35 views
0

我很新的编程,不得不学习,使我的博士项目的一部分,实际上是可以的,但得到我的Python代码后,从数据拉一个网站,并把它写到一个excel文件中,我在下一部分有点失落。Python - 搜索2 excel表格数据,然后提取数据标签

我有我的excel文件和提供的辅助文件。我试图在两个文件之间搜索(两个文件都有一个'地址',一旦匹配,从提供的文件中拉出一个标签(在类别下),并将其输入到myfile;或者,如果这更容易,只需将结果写入一个全新的Excel文件。

'MYFILE'

#| Address | 1 | 21 Abbotsford Street Falkirk FK2 7NH | 2 | Police Station Commissioner Street Bo'ness EH51 9AF | 3 | 4 Riverview Terrace Bo'ness EH51 9ED |

成果文件

#| Address |Category 1 | 21 Abbotsford Street Falkirk FK2 7NH | A 2 | Police Station Commissioner Street Bo'ness EH51 9AF | B 3 | 4 Riverview Terrace Bo'ness EH51 9ED | A

,我遇到的问题是,这两个文件的地址“数据没有任何特定的顺序,那么我该如何去从myfile中获取地址,在提供的文件中搜索它,拉动'Category',然后将地址/类别合并到结果文件中(或者甚至只是添加'分类'到myfile中。

也非常抱歉,如果这一点不清楚,我尽我所能来正确地说出它,但感谢任何建议,甚至我可以看看作为一个扩展来帮助这个。 :)

+0

在我看来,它更容易处理Excel以外的文件,因此您可以使用'pd.read_excel()'将它们放入DataFrame中,然后在地址上合并。 – bernie

回答

0

只需运行一个左连接merge相匹配的地址确切值:

import pandas as pd 

df1 = pd.read_excel('myFile.xlsx', sheetname=0)   # ASSUMING DATA IN FIRST SHEET 
df2 = pd.read_excel('OtherFile.xlsx', sheetname=0)  # ASSUMING DATA IN FIRST SHEET 

outcomedf = pd.merge(df1, df2[['Address', 'Category']], on='Address', how='left') 
0

我不能完全肯定,如果你想这两个文件合并成一个,并检查是否有重复的地址或者如果您试图检查myfile中的地址是否包含在第二个文件中,那么我试图在下面提供这两个文件。

如果要合并和比较这两个文件:

import pandas as pd 

# Reads myfile Excel file to new data frame 
df1 = pd.read_excel("C:/folder/myfile.xlsx") 
# Reads second file (a .csv in this example) to new data frame 
df2 = pd.read_csv("C:/folder/secondfile.csv") 

# Creates a third data frame containing df1 and df2 
df3 = df1.append(df2) 
# Checks for duplicates and creates a new column labeling which are duplicates 
df3["duplicate"] = df3.duplicated(subset="Address", keep=False) 
# Removes all but the first duplicate in the Address column 
df3 = df3.drop_duplicates(subset="Address") 

# Writes df3 to Excel file 
df3.to_excel("C:/folder/outcomefile.xlsx", index=False) 

注:这如果这两个文件具有相同的列

如果要检查,如果只会工作myfile中的地址在第二个文件中重复,然后向myfile添加一个副本列并打印到新的Excel文件中:

import pandas as pd 

# Reads myfile Excel file to new data frame 
df1 = pd.read_excel("C:/folder/myfile.xlsx") 
# Reads second file (a .csv in this example) to new data frame 
df2 = pd.read_csv("C:/folder/secondfile.csv") 

# Checks if addresses in myfile (df1) are duplicated in second file (df2) 
# Then adds duplicate column to myfile 
df1["duplicate"] = df1["Address"].isin(df2["Address"]) 

# Writes edited myfile data frame to new Excel file 
df1.to_excel("C:/folder/outcomefile.xlsx", index=False) 

注:两者将只匹配确切地址

希望这会有所帮助,如果您有什么需要不同的让我知道!

+0

感谢这两个选项......不幸的是,我在提供的文件中发现一个错误,因为它是一个不完整的使用参考。我现在将不得不使用myfile地址中的基于Web的搜索,然后希望通过这种方式提取结果。我希望有这样的想法,那就是使用两个excel文件!但是,再次感谢这两个代码,我确信一旦我找到新的代码/搜索程序,它们就会派上用场。 –