如果文件名的某些字符匹配,如何使用循环从两个目录加载文件?

How to load files from two directories using a loop if some characters of filenames match?

我有两个目录: 第一个是:

dir1 = 'path1/to/files/'

第二个是:

dir2 = 'path2/to/files/'

dir1中存储了一些文件:

filename0001.csv
filename0002.csv
filename0003.csv

dir2中存储了一些其他文件:

othername0001.csv
othername0002.csv
othername0003.csv

我想做的是遍历 dir1 并加载 filename0001.csv 然后遍历 dir2 并在 pandas 数据帧中加载 othername0001.csv df1df2。然后使用循环对其他文件也执行此操作。

如果没有循环,我会做这样的事情:

df1 = pd.read_csv('path1/to/files/filename0001.csv')

df2 = pd.read_csv('path2/to/files/othername0001.csv')

然后加入它们等。然后对其他文件执行相同的操作。

我现在想做的是使用循环并从这两个目录加载文件,如果它们的最后四个字符与 pandas 数据帧匹配。

编辑:最后总是相同的数字部分。我想要 3 个数据框,每个数字一个。

不确定会不会报错,不过我觉得应该是这样的

import pandas as pd

dir1 = 'path1/to/files/'
dir2 = 'path2/to/files/'

zero_padding=3
df = pd.DataFrame()
for idx in range (0,3):

    df1 = pd.read_csv(f'{dir1}filename{str(idx).zfill(zero_padding)}.csv')
    df2 = pd.read_csv(f'{dir2}othername{str(idx).zfill(zero_padding)}.csv')
    df = df.append(pd.concat([df1, df2], axis=1))

类似这样的东西可以使用 os 模块。 os.listdir() 方法从目录中创建文件名的可迭代对象,然后解析字符串以从文件名的最后 4 位

中查找 id 中的匹配项
import os
import pandas as pd

dir1 = 'path1/to/files/'
dir2 = 'path2/to/files/'

# Output list
output = []

# For each file in the first directory
for i in os.listdir(dir1):
    # For each file in the second directory
    for j in os.listdir(dir2):
        # If the last 4 digits of filename match (ignoring file extension)
        if i[-8:-4] == j[-8:-4]:
            # Load CSVs into pandas
            df1 = pd.read_csv(dir1 + i)
            df2 = pd.read_csv(dir2 + j)
            
            output.append(df1.merge(df2))