Pandas:从CSV中读取一个含有datetime类型的DataFrame、单项时间数据获取
前言
有一个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、单项时间数据获取的更多相关文章
- java中读取特殊文件的类型
java中读取特殊文件的类型: 第一种方法(字符拼接读取): public static String getType(String s){ String s1=s.substring(s.index ...
- javascript中检测一个变量的类型
/** * 怎么检测一个变量的类型? * 在js中检测对象类型主要有三种:typeof, instanceof, constructor, 这几种都可以检测对象的类型. * 另外还可以适应jQuery ...
- mysql中varchar类型和datetime类型字段进行比较
我是在mysql5.7版本进行比较 表a的字段order_no和表iwebshop_tmp的字段order_no一样 需要更新iwebshop_member_order表的datetime类型expi ...
- [EntityFramework] 对 DateTime 类型使用 SQL 服务器时间或者字段默认值
DateTime 类型在 SQL 服务器上如果设置了默认值,在 EntityFramework 添加新行的时候想使用该默认值,则不能对新增加的实体的 DateTime 字段赋值. 但是如果新增加的实体 ...
- golang中从一个日期开始往后增加一段时间
废话少说上code, 这个是从当前日期开始,往后增加一个月时间 package main import ( "fmt" "time" ) func main() ...
- java中插入myslq的datetime类型的
java.util.Date d = new java.util.Date(); Timestamp tt=new Timestamp(d.getTime()); ps.setTimestamp(4, ...
- 一个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 ...
- sql语句中获取datetime的日期部分或时间部分
sql语句中获取datetime的日期部分 sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. ...
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...
随机推荐
- shiro 框架之 加密处理。
一.shiro 加密? /* Shiro? 一.为什么要加密? 为调高数据库的安全性,需要给密码加密. 二.常见的加密算法? 1.1哈希算法 md5:加密算法 哈希函数 1.2.对称算法 1.3.非对 ...
- from 表单上传多个文件?
和单个上传文件基本相同,就是需要在后台控制器中,用数组来接收 jsp页面提交过来的file数据. 也分为三个部分演示. 一.jsp <%-- Created by IntelliJ IDEA. ...
- AT2650 [ARC077C] guruguru
可以发现,如果我们枚举每个理想亮度 \(X\) 然后再求在这个理想亮度情况下的答案是非常难维护的. 不妨反过来,考虑每个位置 \(i, i + 1\) 之间对每个理想亮度 \(X\) 减少次数的贡献. ...
- CDN 的缓存与回源机制解析
CDN的缓存与回源机制解析 CDN (Content Delivery Network,即内容分发网络)指的是一组分布在各个地区的服务器.这些服务器存储着数据的副本,因此服务器可以根据哪些服务器与用户 ...
- 基于Itextpdf合成PDF
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/12023314.html 开发过程中有用到PDF合成, 记录一下合成的方法和代码. 使用工具 : ...
- LVS负载均衡群集部署——NAT模式
LVS负载均衡群集部署--NAT模式 1.群集应用概述 2.NAT模式LVS负载均衡群集部署 1.群集应用概述: 存在的问题: 互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求 ...
- WEB前端开发--1(Web前端开发综述)
Web前端开发 Web--Web系统 前端--网页上为用户呈现的部分 开发--编写代码 1. 前端与后端 前端:网页上为用户呈现的部分 后端:与数据库进行交互,完成数据存取 2. 网站与 ...
- java_JDBC,连接数据库方式,RestSet结果集,Statement,PreparedStatement,事务,批处理,数据库连接池(c3p0和Druid)、Apache-DBUtils、
一.JDBC的概述 1.JDBC为访问不同的数据薛是供了统一的接口,为使用者屏蔽了细节问题.2. Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作 ...
- 浅谈.net core如何使用EFCore为一个上下文注类型注入多个实例用于连接主从数据库
在很多一主多从数据库的场景下,很多开发同学为了复用DbContext往往采用创建一个包含所有DbSet<Model>父类通过继承派生出Write和ReadOnly类型来实现,其实可以通过命 ...
- Spark算子 - aggregateByKey
释义 aggregateByKey逻辑类似 aggregate,但 aggregateByKey针对的是PairRDD,即键值对 RDD,所以返回结果也是 PairRDD,结果形式为:(各个Key, ...