2015-06-27 69 views
2

的圖像將有助於理解這個問題: enter image description here如何鏈接python中的多個.txt文件之間的操作?

在左側的.txt文件是客戶訂單歷史記錄。文本文件中的一列表示訂單ID號(order_idno)。在右邊我們有公司的交易數據。這在不同的網站上運行,並且這段時間被分成幾個星期。

.txt文件存儲在一個文件夾中。每個單獨的文件被命名爲即「By_Customer_Id_01120.txt」,它看起來像:

enter image description here

我們感興趣的是第一列(order_idno)。

望着從Excel文件中的數據,一旦進口的熊貓數據幀,它看起來像

df = df[['sitename', 'order_idno', 'ts_placed']] 

Out[7]: 
           sitename order_idno ts_placed 
0   www.mattressesworld.co.uk  5242367   47 
1  www.bedroomfurnitureworld.co.uk  5242295   47 
2  www.bedroomfurnitureworld.co.uk  5242295   47 
3  www.bedroomfurnitureworld.co.uk  5242295   47 
4  www.bedroomfurnitureworld.co.uk  5242295   47 
..... 

其中「ts_placed」是週數。

我想要做的是爲每個客戶(每個.txt文件代表)找到他們在每個網站和每週的訂單數量。

如果需要更多詳細信息或標題是通用的,請隨時編輯該問題。

+0

使用數據庫。 – Daniel

+0

嗨丹尼爾,你能更具體一些嗎?如果你不介意幫我編輯問題,以便我知道要問什麼?謝謝。 –

+0

@john你有沒有聽說過SQL? –

回答

3

此代碼未經測試,可能包含語法錯誤。這只是爲了讓你瞭解如何開始。這也不是有效的,因爲我不知道你想得到什麼信息。如果您真的想每次都獲取所有客戶的信息,我會多次遍歷Excel表單,在遍歷Excel表單之前將所有客戶讀入內存會更有效率。

首先我們將使用一些模塊。

import re 

您已經設法讀取excel文件,因此我將開始循環遍歷客戶。您可以使用os.listdir函數來執行此操作。

customer_folder = "path/to/customer/folder" 
for file in os.listdir(customer_folder): 

現在我們有一個循環,在客戶檔案進行迭代。讓我們在momemnt上打印我們正在查看的客戶,並檢查文件名是否爲預期的格式。

match = re.match("By_Customer_Id_([0-9]+)\.txt", file) 
    if match: 
     print("Looking at customer id '{0}':".format(match.group[1])) 

現在我們必須打開文件,這樣我們才能列出客戶的所有訂單ID號。

 with open(os.path.join(customer_folder, file) as customer: 
      customer_idnos = [order.split(",")[0] for order in customer] 

讓我們遍歷Excel文檔中的元素,以便我們可以從中獲取信息。我們首先創建一個字典,以便稍後保存我們的信息。

  sites = {} 
      for _, row in df.iterrows(): 
       if row["order_idno"] in customer_idnos: 

如果我們看ordner ID號是在客戶的訂單ID號,我們正在研究我們得到我們的信息。

    if not row["sitename"] in sites: 
         sites[row["sitename"]] = [] 
        sites[row["sitename"]].append(row["ts_placed"]) 

讓我們打印我們的信息。

  for site, weeks in sites: 
       print(" Site '{0}' visited {1} time(s):".format(
           site,  len(weeks))) 
       for week in weeks: 
        print("  In week {0}".format(week)) 
相關問題