根据时间戳间隔创建 csv 文件的数据框

2024-04-14

我相信我的问题非常简单,并且一定有一个非常简单的方法来解决这个问题,但是由于我对Python,特别是pandas很陌生,我无法自己解决它。

我有数百个 csv 文件,格式如下:text_2014-02-22_13-00-00

所以格式是str_YY-MM-DD_HH-MI-SS。总而言之,每个文件代表一小时的间隔。

我想根据我将设置的间隔创建一个数据框Start_Time and End_Time,从该区间开始。所以,例如,如果我设置Start_Time如 2014-02-22 21:40:00 和End_Time如 2014-02-22 22:55:00 (我使用的时间格式只是为了说明示例),那么我将得到一个数据帧,它包含上述间隔之间的数据,该数据来自两个不同的文件。

所以,我认为这个问题可以分为两部分:

1 - 仅读取文件名中的日期

2 - 根据我设置的时间间隔创建一个数据帧。

希望我能够做到简洁和准确。我非常感谢您在这方面的帮助!也欢迎提供有关查找内容的建议


该解决方案有几个不同的部分。

  1. 创建文件夹路径
  2. 手动创建 3 个 csv 文件
  3. 将 csv 文件保存到列表中
  4. 编写自定义函数将文件名解析为日期时间对象
  5. 将所有内容放在一起,循环浏览文件夹中的 csv 文件
import os
import pandas as pd
import datetime

# step 1: create the path to folder
path_cwd = os.getcwd()

# step 2: manually 3 sample CSV files
df_1 = pd.DataFrame({'Length': [10, 5, 6],
                     'Width': [5, 2, 3],
                     'Weight': [100, 120, 110]
                    }).to_csv('text_2014-02-22_13-00-00.csv', index=False)
df_2 = pd.DataFrame({'Length': [11, 7, 8],
                     'Width': [4, 1, 2],
                     'Weight': [101, 111, 131]
                    }).to_csv('text_2014-02-22_14-00-00.csv', index=False)
df_3 = pd.DataFrame({'Length': [15, 9, 7],
                     'Width': [1, 4, 2],
                     'Weight': [200, 151, 132]
                    }).to_csv('text_2014-02-22_15-00-00.csv', index=False)

# step 3: save the contents of the folder to a list
list_csv = os.listdir(path_cwd)
list_csv = [x for x in list_csv if '.csv' in x]

print('here are the 3 CSV files in the folder: ')
print(list_csv)

# step 4: extract the datetime from filenames
def get_datetime_filename(str_filename):
    '''
    Function to grab the datetime from the filename.

    Example: 'text_2014-02-22_13-00-00.csv'
    '''
    # split the filename by the underscore
    list_split_file = str_filename.split('_')

    # the 2nd part is the date
    str_date = list_split_file[1]

    # the 3rd part is the time, remove the '.csv'
    str_time = list_split_file[2]
    str_time = str_time.split('.')[0]

    # combine the 2nd and 3rd parts
    str_datetime = str(str_date + ' ' + str_time)

    # convert the string to a datetime object
    # https://chrisalbon.com/python/basics/strings_to_datetime/
    # https://stackoverflow.com/questions/10663720/converting-a-time-string-to-seconds-in-python
    dt_datetime = datetime.datetime.strptime(str_datetime, '%Y-%m-%d %H-%M-%S')

    return dt_datetime

# Step 5: bring it all together

# create empty dataframe
df_master = pd.DataFrame()

# loop through each csv files 
for each_csv in list_csv:

    # full path to csv file
    temp_path_csv = os.path.join(path_cwd, each_csv)

    # temporary dataframe
    df_temp = pd.read_csv(temp_path_csv)

    # add a column with the datetime from filename
    df_temp['datetime_source'] = get_datetime_filename(each_csv)

    # concatenate dataframes
    df_master = pd.concat([df_master, df_temp])

# reset the dataframe index
df_master = df_master.reset_index(drop=True)

# examine the master dataframe
print(df_master.shape)
# print(df_master.head(10))
df_master.head(10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据时间戳间隔创建 csv 文件的数据框 的相关文章

  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • MongoEngine 查询具有以列表中指定的前缀开头的属性的对象的列表

    我需要在 Mongo 数据库中查询具有以列表中任何前缀开头的特定属性的元素 现在我有一段这样的代码 query mymodel terms term in query terms 并且这会匹配在列表 term 上有一个项目的对象 该列表中的
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • 为什么 csv.DictReader 给我一个无属性错误?

    我的 CSV 文件是 200 Service 我放入解释器的代码是 snav csv DictReader open screennavigation csv delimiter print snav fieldnames 200 for
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 等待子进程使用 os.system

    我用了很多os system在 for 循环内调用创建后台进程 如何等待所有后台进程结束 os wait告诉我没有子进程 ps 我使用的是Solaris 这是我的代码 usr bin python import subprocess imp
  • NLTK:查找单词大小为 2k 的上下文

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

随机推荐