我有多个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')
除此之外,我不知道细节。一旦将它们拉入,我将对它们中的每一个执行相同的操作(删除和格式化相同的列),因此我也想在那里进行遍历。
预先感谢您的帮助。
答案 0 :(得分:1)
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一次加载到单个数据帧的方法。