python中datetime默认的1990年改为_python-将DateTimeindex转换为仅包含年,时和日,...

您需要DatetimeIndex.floor:

myIndex = df.index.floor('D')

样品:

rng = pd.date_range('2017-04-03 15:00:45', periods=10, freq='24T')

df = pd.DataFrame({'a': range(10)}, index=rng)

print (df)

a

2017-04-03 15:00:45 0

2017-04-03 15:24:45 1

2017-04-03 15:48:45 2

2017-04-03 16:12:45 3

2017-04-03 16:36:45 4

2017-04-03 17:00:45 5

2017-04-03 17:24:45 6

2017-04-03 17:48:45 7

2017-04-03 18:12:45 8

2017-04-03 18:36:45 9

myIndex = df.index.floor('D')

print (myIndex)

DatetimeIndex(['2017-04-03', '2017-04-03', '2017-04-03', '2017-04-03',

'2017-04-03', '2017-04-03', '2017-04-03', '2017-04-03',

'2017-04-03', '2017-04-03'],

dtype='datetime64[ns]', freq=None)

myIndex = df.index.normalize()

print (myIndex)

DatetimeIndex(['2017-04-03', '2017-04-03', '2017-04-03', '2017-04-03',

'2017-04-03', '2017-04-03', '2017-04-03', '2017-04-03',

'2017-04-03', '2017-04-03'],

dtype='datetime64[ns]', freq=None)

时序:

ix = pd.date_range('1970-01-01', '2200-01-15', freq='1H')

print (len(ix))

2016481

In [68]: %timeit (ix.normalize())

10 loops, best of 3: 178 ms per loop

In [69]: %timeit (ix.floor('d'))

10 loops, best of 3: 38.4 ms per loop

#solution from Dror (https://stackoverflow.com/questions/45954497/in-pandas-group-by-date-from-datetimeindex)

In [70]: %timeit pd.to_datetime(ix.date)

1 loop, best of 3: 5.09 s per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值