处理许多在python中添加元数据的csv文件

时间:2019-06-26 10:03:36

标签: python pandas csv

我的csv文件有20个:

Value Value2
A       B
C       D
etc.

文件位于三个不同的文件夹中。 2个位于文件夹MI中,4个位于MB中,其余的位于W中。 我有所有路径的清单。我使用该代码来获取它:

import os
for root, dirs, files in os.walk("C:\User\ab"):
    for file in files:
        if file.endswith(".col"):
             print(os.path.join(root, file))

示例路径如下:

C:\User\ab\mb\432432\Out\xxxxx.col 
C:\User\ab\mb\787878\Out\xxxxx.col
C:\User\ab\mi\3114\Out\xxxxx.col 
C:\User\ab\w\2312\Out\xxxxx.col 

以上我仅包含四个文件的路径,有20个。 我需要做什么:

我需要创建一个包含以上所有DF的DF。但是我需要添加带有文件夹名称和样本名称的列(样本名称是目录名称后路径中的数字)。

因此整个DF将具有以下结构:

Value    Value2   Dir   Number
    A       B     MB    432432
    C       D     MB    432432
    G       E     MB    787878
    G       E     MB    787878
    F       O     W      22222
    F       O     W      22222
    etc.

有没有简单的方法可以做到这一点?我尝试了很多方法,但是我认为我的逻辑不正确。有人可以给我一些建议,我该如何快速地做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了您的问题。 如果您尝试从不同的文件夹中获取文件,并从路径中获取信息,则可以执行以下操作:

import glob

all_files = glob.glob('C:\User\ab\*\*\Out\*.col')

for file in all_files:
    meta = file.split('\')
    dir = meta[3]
    nmbr = meta[4]

此代码段搜索相应的文件(请注意,glob允许通配符搜索)。然后,您可以遍历文件并通过拆分从路径中提取所需的信息。 然后,您可以打开文件,读取每一行并将相应的信息附加到该行,然后将其保存到新的csv文件中。