gpt4 book ai didi

python - 如何使用 Pandas concat 导入多个 csvs、分配变量并连接到一个 DataFrame 中?

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:27 26 4
gpt4 key购买 nike

我想优化下面的代码。它有效,但如果可以更简洁有效地完成,我想提出建议。

import os
import glob
import pandas as pd
import numpy as np

files = glob.glob(os.path.join('data','*.csv'))

dfs = []

for file in files:

variable = os.path.basename(file).split("_")[0] #split filename
df= pd.read_csv(file)
df['variable'] = variable #assign variable
dfs.append(df)

finalDf = pd.concat(dfs, ignore_index = True)

有什么想法吗?提前谢谢你

Pandas 0.21.1 和 Python 3.6.5

最佳答案

您的代码结构非常好。连接数据帧列表比重复附加到现有数据帧更有效。

设置数据类型

您可以尝试和优化的是读取您的 csv 文件,即 df = pd.read_csv(file)。我唯一的建议是使用将列名映射到类型的字典来指定 dtype 参数。特别是,如果您有包含分类数据的列,请映射到 'category' 以确保优化内存使用。

列表理解+赋值

你提到了更简洁的代码。您可以利用 pd.DataFrame.assign 创建一个新系列并将其设置为您的文件名。此外,您可以使用列表理解:

dfs = [pd.read_csv(file).assign(variable=os.path.basename(file).split('_')[0]) \
for file in glob.glob(os.path.join('data','*.csv'))]

finalDf = pd.concat(dfs, ignore_index=True)

如果您选择这种方法,您可能会失去可读性,因此请记录您正在做的事情。

关于python - 如何使用 Pandas concat 导入多个 csvs、分配变量并连接到一个 DataFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50764548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com