【问题标题】:Python reading multiple csv files and appending them into a dfPython读取多个csv文件并将它们附加到df中
【发布时间】:2021-07-13 16:38:11
【问题描述】:

我有一个包含多个 csv 文件的文件夹。其中一些的名称以字符串“REC_”开头 我想获取以该字符串开头的所有文件并将它们附加到单个 df 中。我该怎么做?

我只获取一个的方式是

with open(path_to_my_folder, 'r') as csvfile:
    reader = csv.reader(csvfile)

这样我需要在 'path_to_my_folder' 变量中指定确切的文件。

【问题讨论】:

  • 根据答案或使用glob - https://www.geeksforgeeks.org/how-to-use-glob-function-to-find-files-recursively-in-python/
  • 这能回答你的问题吗? Import CSV file as a pandas DataFrame

标签: python csv


【解决方案1】:

首先,您可以列出所有以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

【讨论】:

    【解决方案2】:

    您谈论数据框,所以我猜您愿意使用 pandas。 您可以使用内置的 pathlib-module 轻松迭代您的 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) 
    

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2017-02-15
      • 2018-12-14
      相关资源
      最近更新 更多