如果文件名的某些字符匹配,如何使用循环从两个目录加载文件?
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
df1
和 df2
。然后使用循环对其他文件也执行此操作。
如果没有循环,我会做这样的事情:
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))
我有两个目录: 第一个是:
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
df1
和 df2
。然后使用循环对其他文件也执行此操作。
如果没有循环,我会做这样的事情:
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))