2017-04-13 58 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文件!但是,再次感謝這兩個代碼,我確信一旦我找到新的代碼/搜索程序,它們就會派上用場。 –