我有一个df时间序列.我提取了索引,并希望将它们各自转换为datetime.你是怎么做的?我尝试使用pandas.to_datetime(x)但在使用后检查时它不会转换它type()
Goi*_*Way 53
>>> 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)
我遇到了同样的问题,并尝试了@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)
只是对问题的更新,我尝试了最受好评的答案,它给了我这个警告
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)
| 归档时间: |
|
| 查看次数: |
45997 次 |
| 最近记录: |