如何检索类似命名的csv文件并使用它们创建数据帧

2024-04-24 22:57:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个csv文件,其名称以数字顺序相似(nba\u 1、nba\u 2等)。就列名和数据类型而言,它们的格式都是相同的。有没有一种方法可以编写一个for循环或类似的东西来将它们拉入并命名,而不是将每个循环分别拉入一个数据帧(nba_1 = pd.read_csv('/nba_1.csv'))?我认为基本框架应该是这样的:

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

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

事先谢谢你的帮助。你知道吗


Tags: 文件csv数据方法名称框架forread
2条回答

在Pandas上构建的Dask库具有将多个csv一次加载到单个数据帧的方法。你知道吗

  • 我认为你真正的问题是如何把所有的文件放到一个数据框中
  • 使用标准库的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
  • 每个keydict将是一个文件名
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()])

相关问题 更多 >