Using Pandas' datetime64 dtype to convert to a datetime.timedelta object results in this type error:
TypeError: unsupported type for timedelta microseconds component: numpy.int32
Reproduce:
# set up a dataframe with a datetime value in it from datetime import datetime import pandas as pd df = pd.DataFrame({'foo' : [datetime.now()] }) print df.dtypes # => foo datetime64[ns] dtype: object # let's convert to timedelta df.foo.apply(lambda r : timedelta(hours = r.hour, minutes = r.minute, seconds = r.second, microseconds = r.microseconds)) => TypeError: unsupported type for timedelta microseconds component: numpy.int32
Expected:
# no excepetions, whatever the correct value df.foo.apply(lambda r : timedelta(hours = r.hour, minutes = r.minute, seconds = r.second, microseconds = r.microseconds)) # => 0 16:08:25.347571 Name: foo, dtype: timedelta64[ns]
Work around:
# if you can't control the timedelta conversion (i.e. it is somewhere embedded, e.g. in a library) df.foo = df.foo.astype(datetime) # if you can df.foo.apply(lambda r : timedelta(hours = r.hour, minutes = r.minute, seconds = r.second, microseconds = int(r.microseconds))
Version information
> pd.show_versions() INSTALLED VERSIONS ------------------ commit: None python: 2.7.6.final.0 python-bits: 64 OS: Linux OS-release: 3.13.0-24-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 pandas: 0.16.0 nose: None Cython: None numpy: 1.9.2 scipy: None statsmodels: None IPython: 3.0.0 sphinx: 1.2.2 patsy: None dateutil: 2.3 pytz: 2014.10 bottleneck: None tables: None numexpr: None matplotlib: None openpyxl: 2.1.4 xlrd: None xlwt: None xlsxwriter: None lxml: 3.4.2 bs4: 4.3.2 html5lib: 0.999 httplib2: 0.8 apiclient: 1.2 sqlalchemy: None pymysql: None psycopg2: None
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4