用Python Pandas循环将不同的.csv文件读入不同的数据帧

2024-06-02 06:08:38 发布

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

在把这个问题标记为重复问题之前,请阅读整个帖子。我知道this帖子有一个类似的问题,但我要找的是不同的。在

我有一个文件名列表:

files = ['first.csv', 'second.csv', 'third.csv']

我想在大熊猫圈里读它们。我希望为循环中的每个迭代创建一个不同的数据帧:

^{pr2}$

但在一个循环里。比如:

for i in range(len(files)):
    csv = re.split('.', files[i])[0]
    csv = pd.read_csv(files[i])

重要信息:每个csv都有不同的行和列。所以我不想读这三个csv,把它们和pd.concat组合成一个。我想分开读。在

我试着把它们读入一个列表:

dataframe_list = [pd.read_csv(file_name) for file_name in files]

但这引发了下一个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 59: invalid start byte

Tags: csvnamein标记列表forread文件名
2条回答

你可以这样做:

import pandas as pd
files = ['file1.csv', 'file2.csv', 'file3.csv']
dataframe_list = [pd.read_csv(file_name) for file_name in files]

然后可以调用dataframe_list[0]来获取第一个数据帧,依此类推。您可能希望使用字典,而不是键作为所需的数据帧标签。在


快速提示:构造for i in range(0, len(files)),然后只关心files[i]是丑陋的。files是一个列表,因此可以使用for file in files对其进行迭代。在

files = ['first.csv', 'second.csv', 'third.csv']
list_of_df=[]
for i in range(len(files)):
    df = pd.read_csv(files[i],encoding = "utf-8")
    list_of_df.append(df)

相关问题 更多 >