当前位置: 首页 > 知识库问答 >
问题:

将文件夹的多个csv文件加载到一个数据帧中

汪阿苏
2023-03-14

我有多个csv文件保存在一个文件夹中,具有相同的列布局,并希望将其作为pandas中的数据帧加载到python中。

这个问题与这条线索非常相似。

我使用以下代码:

import glob
import pandas as pd
salesdata = pd.DataFrame()
for f in glob.glob("TransactionData\Promorelevant\*.csv"):
    appenddata = pd.read_csv(f, header=None, sep=";")
    salesdata = salesdata.append(appenddata,ignore_index=True)

还有更好的解决方案吗?

这需要很多时间。

谢啦

共有3个答案

丌官和泰
2023-03-14

也许使用bash会更快:

head -n 1 "TransactionData/Promorelevant/0.csv" > merged.csv
tail -q -n +2 TransactionData/Promorelevant*.csv >> merged.csv

或者在jupyter笔记本中使用

!head -n 1 "TransactionData/Promorelevant/0.csv" > merged.csv
!tail -q -n +2 "TransactionData/Promorelevant*.csv" >> merged.csv

这样做的目的是不需要解析任何内容。

第一个命令复制其中一个文件的头。如果没有标题,可以跳过这一行。Tail跳过所有文件的标题并将其添加到csv。

在Python中追加可能更昂贵。

当然,使用pandas确保您的解析仍然有效。

pd.read_csv("merged.csv")

对你的基准很好奇。

邬飞捷
2023-03-14

在链接到实际答案的帮助下

这似乎是最好的一行:

import glob, os    
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "*.csv"))))
东方旭东
2023-03-14

我建议将列表理解与concat结合使用:

import glob
import pandas as pd

files = glob.glob("TransactionData\Promorelevant*.csv")
dfs = [pd.read_csv(f, header=None, sep=";") for f in files]

salesdata = pd.concat(dfs,ignore_index=True)
 类似资料:
  • 问题内容: 我将多个csv文件保存在一个具有相同列布局的文件夹中,并希望将其作为pandas中的数据框加载到python中。 我正在使用以下代码: 是否有其他软件包更好的解决方案? 这需要很多时间。 谢谢 问题答案: 我建议使用列表理解:

  • 我想从一个目录中读取几个csv文件到pandas中,并将它们连接到一个大的数据帧中。不过我还没弄明白。以下是我目前掌握的情况: 我想我需要在for循环中得到一些帮助???

  • 我有多个csv文件(每个文件包含N行(例如,1000行)和43列)。 我想把文件夹中的几个csv文件读入pandas,并将它们合并到一个数据帧中。 不过我还没能弄明白。 问题是,数据帧的最终输出(即,)将所有列(即43列)合并到代码的一列(见附图)屏幕截图中 选定行和列的示例(文件一) 选择的行和列(文件二)Client_IDClient_NamePointer_of_Bins日期权重C00000

  • //我得到的错误是java。尼奥。文件FileAlreadyExistsException所以据我所知,它试图将文件保存到确切的位置,而不是保存在文件中,如果我将目标地址改为“垃圾/垃圾”,我需要以这种方式保存几个文本文件。它将在那里保存一个名为垃圾的文件。txt。但在for-each的下一个循环中,它会抛出一个“已经存在”的异常。。。 有人能解释一下我如何从src文件夹将所有txt文件保存到该文

  • 我有3个维度为(a*2、b*2、c*2)的数据帧,而a、b、c是不同的数字。我想把它们添加到一个csv文件中,但每次都写不出来。我使用了csv的熊猫数据帧输出端 但做不到。 我的代码- 但是,我得到的最终输出是最后一个数据帧,而不是所有其他数据帧。

  • 我在同一个文件夹中有数千个csv文件名,如下file_x_x.csv,其中x是1到10000之间的数字。每个文件包括一个标题和一行数据: file_1_1.csv 我的方法: 我不知道如何在最后创建一个唯一的文件。你能看一下上面的代码并告诉我如何获得所需的输出吗?如果我错过了什么?