如何检索名称相似的csv文件并使用它们创建数据框

时间:2019-09-11 16:46:31

标签: python pandas dataframe

我有多个csv文件,它们的名称按数字顺序排列(nba_1,nba_2等)。它们的格式和列名和dtypes一样。除了手动将每个单独拉入数据帧(nba_1 = pd.read_csv('/nba_1.csv'))之外,还有一种方法可以编写一个for循环或类似的东西来拉入它们并命名?我认为基本框架应该是这样的:

for i in range(1, 6):
    nba_i = pd.read_csv('../nba_i.csv')

除此之外,我不知道细节。一旦将它们拉入,我将对它们中的每一个执行相同的操作(删除和格式化相同的列),因此我也想在那里进行遍历。

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  • 我认为您真正的问题是如何将所有文件放入数据框
  • 使用标准库的一部分pathlib处理文件。
  • 由于您的csv文件是相同的(如您在问题中所述),因此将它们全部组合成一个数据帧,然后一次清除所有数据将更加有效。
    • 分别清理每个数据帧然后合并它们的效率较低

要获取单个合并的数据帧

from pathlib import Path
import pandas as pd

p = Path(r'c:\some_path_to_files')  # set your path
files = p.glob('nba*.csv')  # find your files

# It was stated, all the files are the same format, so create one dataframe
df = pd.concat([pd.read_csv(file) for file in files]) 
  • [pd.read_csv(file) for file in files]是一个列表推导,它创建每个文件的数据框。
  • pd.concat合并列表中的所有文件

要获取单独的数据框:

  • 创建dict个数据框
  • key中的每个dict将是一个文件名
p = Path(r'c:\some_path_to_files')  # set your path
files = p.glob('nba*.csv')  # find your files

df_dict = dict()
for file in files:
    df_dict[file.stem] = pd.read_csv(file)

使用df_dict

df_dict.keys()  # to show you all the keys

df_dict[filename]  # to access a specific dataframe

# after cleaning the individual dataframes in df_dict, they can be combined
df_final = pd.concat([value for value in df_dict.values()])

答案 1 :(得分:0)

在Pandas上构建的Dask库提供了将多个csv一次加载到单个数据帧的方法。