Apply datetime methods to timestamps results in numpy errors · Issue #2689 · pandas-dev/pandas (original) (raw)

Hi,

This may or may not be a bug. I'm unsure of which functionality you were intending.

I have a timestamp created by

rng = pd.date_range(start_date, periods = 100, freq='2H')
A = DataFrame(rng) # We'll leave it as a generic index for now, not important.

I then have a function which is applied to that dataframe via A.apply(f)

def f(x):
    return (x.hour, x.day, x.month)

if I apply this functionality to the raw dataframe via .apply, this will result in a numpy.datetime64 error.

However, if I apply it to individual points.

E.g. f(A.ix[10]), then the correct functionality results.

I have determined that this is due to a difference between the types of the two

e.g. A.dtype = dtype('datetime64[n]s')

type(A.ix[10]) = pandas.tslib.Timestamp

Thus to get around the issue above you may simply add the following functionality to the function

def f(x):
x = pd.Timestamp(x)
return (x.hour, x.month, x.year)

I am filing this as I'm unsure of what you're intended functionality is with this matter