将pandas.tslib.Timestamp转换为datetime python

use*_*440 25 python pandas

我有一个df时间序列.我提取了索引,并希望将它们各自转换为datetime.你是怎么做的?我尝试使用pandas.to_datetime(x)但在使用后检查时它不会转换它type()

Goi*_*Way 53

试试to_datetime()

>>> import pandas as pd
>>> t = pd.tslib.Timestamp('2016-03-03 00:00:00')
>>> type(t)
pandas.tslib.Timestamp
>>> t.to_datetime()
datetime.datetime(2016, 3, 3, 0, 0)
>>> t.to_pydatetime()
datetime.datetime(2016, 3, 3, 0, 0)
Run Code Online (Sandbox Code Playgroud)

更改为datetime.date类型

>>> t.date()
datetime.date(2016, 3, 3)
Run Code Online (Sandbox Code Playgroud)

更新

谢谢,@ mjp,to_datetime()将来会被弃用,请to_pydatetime()改用!

In [4]: t.to_datetime()
/Users/qiuwei/Library/Python/2.7/lib/python/site-packages/IPython/core/interactiveshell.py:2881: FutureWarning: to_datetime is deprecated. Use self.to_pydatetime()
  exec(code_obj, self.user_global_ns, self.user_ns)
Out[4]: datetime.datetime(2016, 3, 3, 0, 0)
Run Code Online (Sandbox Code Playgroud)

  • `AttributeError:模块'pandas'没有属性'to_pydatetime'` (5认同)
  • 作为注释:`pd.to_datetime()`现在被折旧,`pd.to_pydatetime()`是新标准 (3认同)

sha*_*ron 5

我遇到了同样的问题,并尝试了@aikramer2 的解决方案,将一列添加到我的“datetime.datetime”类型的 df 中,但我再次得到了一个 Pandas 数据类型:

#libraries used -
import pandas as pd
import datetime as dt

#loading data into a pandas df, from a local file. note column [1] contains a datetime column -
savedtweets = pd.read_csv('/Users/sharon/Documents/ipython/twitter_analysis/conftwit.csv', sep='\t', 
                      names=['id', 'created_at_string', 'user.screen_name', 'text'], 
                      parse_dates={"created_at" : [1]})
print int(max(savedtweets['id'])) #535073416026816512
print type(savedtweets['created_at'][0]) # result is <class 'pandas.tslib.Timestamp'>

# add a column specifically using datetime.datetime library -
savedtweets['datetime'] = savedtweets['created_at'].apply(lambda x: dt.datetime(x.year,x.month,x.day))
print type(savedtweets['datetime'][0]) # result is <class 'pandas.tslib.Timestamp'>
Run Code Online (Sandbox Code Playgroud)

我怀疑 pandas df 无法存储 datetime.datetime 数据类型。当我制作一个简单的 python 列表来存储 datetime.datetime 值时,我获得了成功:

savedtweets = pd.read_csv('/Users/swragg/Documents/ipython/twitter_analysis/conftwit.csv', sep='\t', 
                      names=['id', 'created_at_string', 'user.screen_name', 'text'], 
                      parse_dates={"created_at" : [1]})
print int(max(savedtweets['id'])) #535073416026816512
print type(savedtweets['created_at'][0]) # <class 'pandas.tslib.Timestamp'>
savedtweets_datetime= [dt.datetime(x.year,x.month,x.day,x.hour,x.minute,x.second) for x in savedtweets['created_at']]
print savedtweets_datetime[0] # 2014-11-19 14:13:38
print savedtweets['created_at'][0] # 2014-11-19 14:13:38
print type(dt.datetime(2014,3,5,2,4)) # <type 'datetime.datetime'>
print type(savedtweets['created_at'][0].year) # <type 'int'>
print type(savedtweets_datetime) # <type 'list'>
Run Code Online (Sandbox Code Playgroud)


Mor*_*ong 5

只是对问题的更新,我尝试了最受好评的答案,它给了我这个警告

usr/local/lib/python3.5/dist-packages/IPython/core/interactiveshell.py:2910: FutureWarning: to_datetime 已弃用。使用 self.to_pydatetime() exec(code_obj, self.user_global_ns, self.user_ns)

并建议我使用to_pydatetime()

例如

sample = Timestamp('2018-05-02 10:08:54.774000')

sample.to_datetime() 将返回 datetime.datetime(2018, 4, 30, 10, 8, 54, 774000)