我有一个文件夹,里面有多个csv文件。其中一些的名称以字符串"REC_"开头我想获取所有以该字符串开头的文件,并将它们附加到一个df中。我该怎么做?
我只取一个的方法是
with open(path_to_my_folder, 'r') as csvfile:
reader = csv.reader(csvfile)
通过这种方式,我需要在"path_to_my_folder"变量中指定确切的文件。
您谈论的是数据帧,所以我想您愿意使用panda。您可以使用内置的pathlib模块轻松地对csv文件进行迭代。最终连接您的帧:
from pathlib import Path
import pandas as pd
path_dir = Path(path_to_my_folder)
list_dfs = []
for path_file in path_dir.glob('REC_*.csv'):
df_small = pd.read_csv(path_file)
list_dfs.append(df_small)
df = pd.concat(list_dfs, axis=0)
首先,您可以列出所有以REC_
开头的文件(如果其中一些不是.csv
,则还需要检查扩展名(。然后,您可以制作一个数据帧列表,每个数据帧包含一个REC_
文件。最后,pd.concat()
可以用于连接数据帧。这里axis=0
意味着我们将它们添加到行上(将它们垂直堆叠在一起(。
REC_file_1.csv
val_1, val_2
1, 2
2, 4
REC_file_2.csv
val_1, val_2
3, 6
4, 8
import os
import pandas as pd
# All files in directory
print(os.listdir())
# ['other_file_1.csv', 'REC_file_1.csv', 'REC_file_2.csv', 'script.py']
rec_file_names = [file for file in os.listdir() if file.startswith('REC_')]
print(rec_file_names) # ['REC_file_1.csv', 'REC_file_2.csv']
dataframes = []
for filename in rec_file_names:
dataframes.append(pd.read_csv(filename))
data_concated = pd.concat(dataframes, axis=0)
print(data_concated)
val_1 val_2
0 1 2
1 2 4
0 3 6
1 4 8