前言

有一个CSV文件test.csv,其中有一列是datetime类型,其他列是数值列,就像下边这样:

问题

1、读取该CSV文件,把datetime列转换为datetime类型,并将它设置为索引列;

2、筛选时间在15:58到16:03之间的行。

解决

①导入相关模块;

import pandas as pd

②读取test.csv;

data=pd.read_csv('test.csv',encoding='GBK',names=['DT','Changes'],header=0)

结果

data
DT Changes
0 2021/5/22 15:58 -1041.690
1 2021/5/22 15:59 -1041.770
2 2021/5/22 16:01 -1041.050
...
15 2021/5/22 16:20 -997.787
16 2021/5/22 16:22 -994.114
17 2021/5/22 16:23 -1007.710

在看data各列的类型:

data.dtypes
DT object
Changes float64
dtype: object

可见我们的datetime数据读进来之后就变成了object类型,而不是datetime类型

③将DT列由Object类型转化为datetime类型;

data = data.assign( DT=pd.to_datetime(data['DT'] ))

这里用到了两个函数assign()与to_datetime():

assign():插入新列,如果新旧列名相同,会覆盖旧列;

to_datetime():把Series转换为datetime类型。

所以上述代码的意思就是:把data的'DT'列转化为datetime类型,把转换后的DT列覆盖原来的DT列。

如果想看这两个函数的具体用法,可以看:

Python:pandas(三)——DataFrame - ShineLe - 博客园

Python:pandas(二)——pandas函数 - ShineLe - 博客园

④把DT列设置为Index列;

data = data.set_index('DT')

结果

data.set_index('DT')
Changes
DT
2021-05-22 15:58:00 -1041.690
2021-05-22 15:59:00 -1041.770
2021-05-22 16:01:00 -1041.050
...
2021-05-22 16:20:00 -997.787
2021-05-22 16:22:00 -994.114
2021-05-22 16:23:00 -1007.710

类型

data.dtypes
DT datetime64[ns]
Changes float64
dtype: object

转换完成!

⑤筛选时间在15:58到16:03之间的行。

data_choose=data.between_time('15:58','16:03')

结果

                     Changes
DT
2021-05-22 15:58:00 -1041.69
2021-05-22 15:59:00 -1041.77
2021-05-22 16:01:00 -1041.05
2021-05-22 16:02:00 -1041.49

前边之所以做那么多,就是为了最后的筛选,由于between_time只能对index为datetime类型的数据进行筛选,所以前边要把datetime变成index列。

关于between_time,可以参考Python:pandas(三)——DataFrame - ShineLe - 博客园

完整代码

import pandas as pd

data = pd.read_csv('test.csv', encoding='GBK', names=['DT', 'Changes'], header=0)
data = data.assign(DT=pd.to_datetime(data['DT']))
data = data.set_index('DT')
data_choose = data.between_time('15:58', '16:03')

补充

1、将某个datetime数据项转化为datetime.datetime类型

转到上文④,我们再看data及其中索引列DT的数据类型:

data
Changes
DT
2021-05-22 15:58:00 -1041.690
2021-05-22 15:59:00 -1041.770
2021-05-22 16:01:00 -1041.050
...
2021-05-22 16:20:00 -997.787
2021-05-22 16:22:00 -994.114
2021-05-22 16:23:00 -1007.710
data.dtypes
DT datetime64[ns]
Changes float64
dtype: object

发现索引列DT列的数据类型是

datetime64[ns]

它并不是我们常用datetime.datetime类型,那么如何把它转换为datetime.datetime呢?

问题

我们如何要提取倒数第二个索引 2021-05-22 16:22:00,并且把它正确地转为datetime.datetime呢?

解决

提取该项元素,调用它的to_pydatetime()方法,即可得到一个datetime.datetime

dt=data.index[-2].to_pydatetime()

结果

datetime.datetime(2021, 5, 22, 0, 0)

2、将同时包含datetime.datetime和datetime.date类型的索引列中的各项索引,全部转化为datetime.date(如果已经是datetime.date则忽略)

问题

假设我们的数据索引列像下边这样,同时包含datetime和date,很不协调,那么如何把它们全部变成date类型呢?

解决

data_date = map(lambda x:x.to_pydatetime().date() if isinstance(x,datetime) else x,list(backavgDf.index))
data_date = list(data_date)
df = df.assign(date=data_date)
df.set_index('date')

Pandas:从CSV中读取一个含有datetime类型的DataFrame、单项时间数据获取的更多相关文章

  1. java中读取特殊文件的类型

    java中读取特殊文件的类型: 第一种方法(字符拼接读取): public static String getType(String s){ String s1=s.substring(s.index ...

  2. javascript中检测一个变量的类型

    /** * 怎么检测一个变量的类型? * 在js中检测对象类型主要有三种:typeof, instanceof, constructor, 这几种都可以检测对象的类型. * 另外还可以适应jQuery ...

  3. mysql中varchar类型和datetime类型字段进行比较

    我是在mysql5.7版本进行比较 表a的字段order_no和表iwebshop_tmp的字段order_no一样 需要更新iwebshop_member_order表的datetime类型expi ...

  4. [EntityFramework] 对 DateTime 类型使用 SQL 服务器时间或者字段默认值

    DateTime 类型在 SQL 服务器上如果设置了默认值,在 EntityFramework 添加新行的时候想使用该默认值,则不能对新增加的实体的 DateTime 字段赋值. 但是如果新增加的实体 ...

  5. golang中从一个日期开始往后增加一段时间

    废话少说上code, 这个是从当前日期开始,往后增加一个月时间 package main import ( "fmt" "time" ) func main() ...

  6. java中插入myslq的datetime类型的

    java.util.Date d = new java.util.Date(); Timestamp tt=new Timestamp(d.getTime()); ps.setTimestamp(4, ...

  7. 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式

    Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...

  8. sql语句中获取datetime的日期部分或时间部分

    sql语句中获取datetime的日期部分 sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. ...

  9. 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...

随机推荐

  1. 如何在 IDEA 中添加 Maven 项目的 Archetype(解决添加不起作用的问题)

    前言 在 IDEA 中点击新建 Maven 模块,会发现他已经为我们罗列出来了许多的 archetype,但有些时候满足不了我们的需求.下面就来看看如何添加自己的脚手架吧. 实现过程 新建模块 在 I ...

  2. 为什么内部类调用的外部变量必须是final修饰的?

    感谢原文:https://blog.csdn.net/u010393325/article/details/80643636 因为生命周期的原因.方法中的局部变量,方法结束后这个变量就要释放掉,fin ...

  3. js正则表达式 未提交进行验证

    转载请注明来源:https://www.cnblogs.com/hookjc/ function SetInputMust(){  /*var varr=idstr.split(','); idstr ...

  4. VUE3 之 动态组件 - 这个系列的教程通俗易懂,适合新手

    1. 概述 暗示效应告诉我们: 巧妙的暗示会在不知不觉中剥夺我们的判断力,对我们的思维形成一定的影响,造成我们行为的些许改变或者偏差. 例如你的朋友说你脸色不太好,是不是病了,此时,你可能就会感觉浑身 ...

  5. epoll反应堆模型实现

    epoll反应堆模型demo实现 在高并发TCP请求中,为了实现资源的节省,效率的提升,Epoll逐渐替代了之前的select和poll,它在用户层上规避了忙轮询这种效率不高的监听方式,epoll的时 ...

  6. MLlib学习——基本统计

    给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计.一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值.中位数.众数和四分位均值),展型(比 ...

  7. java+selenium脚本编写规范

    2.    源文件规范 2.1    文件名 源文件以最顶层的类名来命名,大小写敏感,文件扩展名为.java 2.2    文件编码 UTF-8 源文件要求编码格式为UTF-8 2.3    源文件结 ...

  8. 【前端开发日记 】VSCODE被初始化之后重新设置的这些事

    不知到什么插件的原因,导致我的vscode编辑器,在输入比如div的时候按tab不会识别成html标签,在设置了推荐词之后还是不好使,于是初始化了自己的编辑器设置 ,导致所有的插件和个性化设置都不见了 ...

  9. springboot自动扫描添加的BeanDefinition源码解析

    1. springboot启动过程中,首先会收集需要加载的bean的定义,作为BeanDefinition对象,添加到BeanFactory中去. 由于BeanFactory中只有getBean之类获 ...

  10. Solution -「NOIOL-S 2021」「洛谷 P7470」岛屿探险

    \(\mathcal{Description}\)   Link.   给定序列 \(\{(a,b)_n\}\),\(q\) 组形如 \((l,r,c,d)\) 的询问,求 \[\Big|\{i\in ...