将多个 CSV 文件导入 pandas 并连接成一个 DataFrame

2024-02-22

我想将目录中的多个 CSV 文件读取到 pandas 中,并将它们连接到一个大的 DataFrame 中。但我还是没能弄清楚。这是我到目前为止所拥有的:

import glob
import pandas as pd

# Get data file names
path = r'C:\DRO\DCL_rawdata_files'
filenames = glob.glob(path + "/*.csv")

dfs = []
for filename in filenames:
    dfs.append(pd.read_csv(filename))

# Concatenate all data into one DataFrame
big_frame = pd.concat(dfs, ignore_index=True)

我想我需要一些帮助for loop?


See pandas:IO 工具 https://pandas.pydata.org/docs/user_guide/io.html对于所有可用的.read_方法。

如果所有 CSV 文件都具有相同的列,请尝试以下代码。

我已经添加了header=0,这样在读取 CSV 文件的第一行后,就可以将其指定为列名称。

import pandas as pd
import glob
import os

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(os.path.join(path , "/*.csv"))

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

或者,归因于评论Sid https://stackoverflow.com/users/3888455/sid.

all_files = glob.glob(os.path.join(path, "*.csv"))

df = pd.concat((pd.read_csv(f) for f in all_files), ignore_index=True)

  • 通常需要识别每个数据样本,这可以通过向数据帧添加新列来完成。
  • pathlib https://docs.python.org/3/library/pathlib.html本示例将使用标准库中的内容。它将路径视为具有方法的对象,而不是要切片的字符串。

导入和设置

from pathlib import Path
import pandas as pd
import numpy as np

path = r'C:\DRO\DCL_rawdata_files'  # or unix / linux / mac path

# Get the files from the path provided in the OP
files = Path(path).glob('*.csv')  # .rglob to get subdirectories

选项1:

  • 添加带有文件名的新列
dfs = list()
for f in files:
    data = pd.read_csv(f)
    # .stem is method for pathlib objects to get the filename w/o the extension
    data['file'] = f.stem
    dfs.append(data)

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

选项2:

  • 使用以下命令添加具有通用名称的新列enumerate
dfs = list()
for i, f in enumerate(files):
    data = pd.read_csv(f)
    data['file'] = f'File {i}'
    dfs.append(data)

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

选项 3:

  • Create the dataframes with a list comprehension, and then use np.repeat https://numpy.org/doc/stable/reference/generated/numpy.repeat.html to add a new column.
    • [f'S{i}' for i in range(len(dfs))]创建一个字符串列表来命名每个数据帧。
    • [len(df) for df in dfs]创建一个长度列表
  • 此选项的归属归因于此绘图answer https://stackoverflow.com/a/65951915/7758804.
# Read the files into dataframes
dfs = [pd.read_csv(f) for f in files]

# Combine the list of dataframes
df = pd.concat(dfs, ignore_index=True)

# Add a new column
df['Source'] = np.repeat([f'S{i}' for i in range(len(dfs))], [len(df) for df in dfs])

选项 4:

  • 1 内衬使用.assign https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.assign.html创建新专栏,归因于评论C8H10N4O2 https://stackoverflow.com/users/2573061/c8h10n4o2
df = pd.concat((pd.read_csv(f).assign(filename=f.stem) for f in files), ignore_index=True)

or

df = pd.concat((pd.read_csv(f).assign(Source=f'S{i}') for i, f in enumerate(files)), ignore_index=True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将多个 CSV 文件导入 pandas 并连接成一个 DataFrame 的相关文章

  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Python 3:将字符串转换为变量[重复]

    这个问题在这里已经有答案了 我正在从 txt 文件读取文本 并且需要使用我读取的数据之一作为类实例的变量 class Sports def init self players 0 location name self players pla
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • PySpark groupByKey 返回 pyspark.resultiterable.ResultIterable

    我试图找出为什么我的 groupByKey 返回以下内容 0
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • TFS 2017 是否能够将构建定义导出和导入到远程服务器中?

    我们在内部服务器上安装了 Team Foundation Server 2017 我们在沙箱环境中构建 NET 代码 但希望能够手动或远程推送新的构建定义或更新 到我们的客户端 生产服务器 自动化的方式 是的 您可以在 TFS 2017 中
  • 在不知道键的情况下解析 json

    我试图在不知道 json 格式的键和结构的情况下解析 java 中的 json 并将该数据保存到 hashmap 中 我如何循环遍历整个 json 格式并将键和值存储到 hashmap 中 id 12345 value 123 person
  • 原始“null”和 Java 8

    我知道处理的最佳实践null原语是使用盒装包装器 例如Integer代替int 正如这里所讨论的 原始数据类型为 Null https stackoverflow com questions 11047276 null for primit
  • dartlang 和 dartdap 库以及与活动目录的连接

    我一直在为 Dart 寻找一个好的 ldap 库来连接 Microsoft Active Directory 我找到了 dartdap 但我似乎无法让它工作 我 100 确信我的 CN 和密码是正确的 因为我可以使用 lpap 浏览器连接到
  • 剪切 HTML 标签并再次包装 HTML 标签第 1 部分 [重复]

    这个问题在这里已经有答案了 我尝试转换以下字符串 p string b bold em italic string em also bold b p 到这个字符串 p string p b bold b em italic string e
  • Parse 中的主要错误:[PFUser currentUser] 死锁

    Parse 社区已多次提出通过解析后台调用因线程争用而导致 PFUser 死锁的问题 但 Parse 选择不处理框架中的这个巨大错误 有谁知道这个问题的解决方法 关于此问题的其他明显报告 https developers facebook
  • 如何在android中将数据库文件附加到电子邮件中?

    您好 我正在尝试通过附加数据库发送电子邮件 我收到邮件 但没有附加以下是我的代码 谁能帮我 尝试 String host smtp gmail com String from email protected cdn cgi l email
  • 如何在 JavaFX 中的 TextField 中强制进行双输入?

    如何确保用户仅输入双精度值在给定的文本字段中 我找到了一个整数的解 https stackoverflow com questions 7555564 what is the recommended way to make a numeri
  • django 查询集中的两个或多个 __in 过滤器

    我有这个查询 query select from products where productnr supplier id in s product list 其中 Product list 如下所示 OB520 3 RH402 20 我如
  • 谷歌地图建筑风格

    有什么方法可以像 openlayer 那样在 google 地图中设置建筑物的样式吗 http workshops opengeo org openlayers intro vector style html http workshops
  • 无法使用传入消息调用侦听器方法,并且 ConsumerRecord 的 Backoff 未耗尽

    下面是我的 kafka 侦听器的方法定义 如果有效负载接收到 null 或空字符串 我想我会遇到以下错误 您能帮忙吗 KafkaListener topics kafka consumer topic name reservation gr
  • URL 重写包括尾部斜杠(如果不存在)

    我有这个RewriteRule上班 RewriteBase my path RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule my path
  • 可以将 NSManagedObject 移动到另一个 NSManagedContext 吗?

    我有两个 NSManagedContext 一个父级和一个子级 用于并发 指定如下 self managedObjectContext NSManagedObjectContext alloc initWithConcurrencyType
  • Schema.org 开放时间

    我正在尝试为 openinghours 创建 schema org 定义 该定义在 Google 的丰富摘要测试工具中进行验证 通过此标记 我想定义商店每周一的营业时间为 11 00 22 00
  • AngularJS:非标准属性上的 ng-src 行为?

    我正在使用 在我的应用程序中集成媒体播放器适合所有人的视频 http v4e thewikies com 生成器 如果浏览器不支持 HTML5 播放器会回退到 Flashvideo and audio我必须建立一个object元素与para
  • 计算xml文件中元素的数量

    首先我参考了这篇文章如何获取 XML 或 XElement 变量中的特定元素计数 https stackoverflow com questions 8764510 how to get specific element count in
  • 选择框内的 HTML

    我想知道是否可以将一个项目分成选择框中的两行 我的选择框的值之一是两个长以适合我的 div 不 这是不可能的 您可以考虑使用 javascript 小部件 例如this http sharebrain info brainpicks scr
  • 关闭mysql不安全语句警告

    我正在使用日志错误将警告 错误写入文件 当我执行 INSERT IGNORE SELECT 语句时 它只是继续写入此警告消息 120905 3 01 23 Warning Unsafe statement written to the bi
  • Vim 中的智能换行

    我一直想知道 Vim 是否有能力智能换行代码 以便它保持与缩进的行相同的缩进 我在其他一些文本编辑器 例如电子文本编辑器 上注意到了它 并发现它可以帮助我更轻松地理解我正在查看的内容 例如而不是 p a href http www exam
  • 将多个 CSV 文件导入 pandas 并连接成一个 DataFrame

    我想将目录中的多个 CSV 文件读取到 pandas 中 并将它们连接到一个大的 DataFrame 中 但我还是没能弄清楚 这是我到目前为止所拥有的 import glob import pandas as pd Get data fil