如何在python中链接多个.txt文件之间的操作?

2024-06-01 21:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

图像将有助于理解此问题: enter image description here

左侧的.txt文件是客户订单历史记录。文本文件中的一列表示订单id号(订单号)。右边是一家公司的交易数据。这在不同的站点上运行,时间段分为几个星期。你知道吗

.txt文件存储在一个文件夹中。每个单独的文件都被命名为“By\u Customer\u Id\u 01120.txt”,看起来像:

enter image description here

我们对第一列(订单号)感兴趣。你知道吗

查看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\u placed”是周数。你知道吗

我想做的是找出每个客户(由每个.txt文件表示)在每个网站上有多少次订单,以及在哪一周。你知道吗

如果这需要更多的细节或者标题是泛型的,请随意编辑问题。你知道吗


Tags: 文件数据订单txtdf客户wwworder
1条回答
网友
1楼 · 发布于 2024-06-01 21:28:36

此代码未经测试,可能包含语法错误。只是让你知道如何开始。它也没有效率,因为我不知道你到底想得到什么信息。我对excel工作表进行了多次迭代,如果您真的希望每次都获得所有客户的信息,那么在迭代excel工作表之前将所有客户读入内存会更有效。你知道吗

首先我们将使用一些模块。你知道吗

import re

您已经成功地读取了excel文件,因此我将从遍历客户的循环开始。你可以用操作系统列表目录函数来执行此操作。你知道吗

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

现在我们有了一个循环,循环遍历客户文件。让我们打印出当前正在查看的客户,并检查文件名是否符合预期格式。你知道吗

    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文档中的元素,以便从中获取信息。我们首先创建一个dict,稍后保存信息。你知道吗

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

如果我们正在查看的订单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))

相关问题 更多 >