pandas将字符串转换成时间_Pandas里的日期转字符串

本文介绍了如何使用Pandas的strftime方法将日期转换为仅包含年份和月份的格式,如'2017-11'。通过示例展示了如何处理DataFrame的索引和列,以及如何按月份对数据进行分组求和。
摘要由CSDN通过智能技术生成

Pandas对时间序列的处理可以说是功能繁多,但感觉找遍了度娘,也没有发现一个能把日期处理成“2017-11”这样到月份格式的方法。后来发现了一个strftime方法,很简单:

df['time'].strftime('%Y-%m')

#以下是格式定义

代码 说明

%Y 4位数的年

%y 2位数的年

%m 2位数的月[01,12]

%d 2位数的日[01,31]

%H 时(24小时制)[00,23]

%l 时(12小时制)[01,12]

%M 2位数的分[00,59]

%S 秒[00,61]有闰秒的存在

%w 用整数表示的星期几[0(星期天),6]

%F %Y-%m-%d简写形式例如,2017-06-27

%D %m/%d/%y简写形式

举个例子:

strtime=['2000-01-31', '2000-02-29', '2000-03-31', '2000-04-30',

'2000-05-31', '2000-06-30', '2000-07-31', '2000-08-31',

'2000-09-30', '2000-10-31']

index=pd.to_datetime(strtime)

time=pd.to_datetime(strtime)

data=list(range(1,11))

df=pd.DataFrame([time,data],columns=index,index=['time','data']).T

#索引和time字段均为Timestamp格式数据

type(index[0])

Out[59]: pandas.tslib.Timestamp

type(df.index[0])

Out[60]: pandas.tslib.Timestamp

type(df.time[0])

Out[61]: pandas.tslib.Timestamp

#先来看索引

mt_time=df.index.strftime('%Y-%m')

mt_time

Out[64]:

array(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05', '2000-06',

'2000-07', '2000-08', '2000-09', '2000-10'],

dtype='

type(mt_time[0])

Out[65]: numpy.str_

#针对列(直接操作还不清楚怎么操作)

time_list=[x.strftime('%Y-%m') for x in df['time']]

time_list

Out[76]:

['2000-01',

'2000-02',

'2000-03',

'2000-04',

'2000-05',

'2000-06',

'2000-07',

'2000-08',

'2000-09',

'2000-10']

#再按月份求和

df['data'].groupby(time_list).sum()

Out[77]:

2000-01 1

2000-02 2

2000-03 3

2000-04 4

2000-05 5

2000-06 6

2000-07 7

2000-08 8

2000-09 9

2000-10 10

Name: data, dtype: int64

有的时候,真的是为了所谓的聪明(找到最优雅的方法计算结果)的办法绞尽脑汁(比如在groupby的时候怎么直接用strftime处理),而放弃了可替代的丑陋的办法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值