Pandas groupby传播奇怪的类型转换行为

时间:2015-11-11 18:33:27

标签: python numpy pandas

我是一个长期的R用户试图转向Python ...它在我在我的框架上执行groupby功能时遇到了Pandas的一些奇怪的自动类型转换。我有一个Pandas数据帧,df,类似于以下内容:

    id      date        numresp
0   1943    2002-11-08  1
1   1943    2002-11-08  1
2   1943    2003-02-17  1
3   1943    2003-02-17  1
4   1943    2003-02-17  1

我的目标是,对于每个唯一的id,我想知道minmax日期,以便我可以计算以天为单位的时间增量。我目前正在使用pandas.groupby来计算最大和最小日期的数组:

max_dates = df.groupby('id').date.max().values
min_dates = df.groupby('id').date.min().values

以下是max_dates

的负责人
(array(['2009-08-19T19:00:00.000000000-0500',
        '2010-11-11T18:00:00.000000000-0600',
        '2009-03-22T19:00:00.000000000-0500', ...,
        '2010-06-09T19:00:00.000000000-0500',
        '2014-04-30T19:00:00.000000000-0500',
        '2009-01-05T18:00:00.000000000-0600'], dtype='datetime64[ns]')

这是min_dates的负责人:

array([  9.72604800e+17,   8.88883200e+17,   9.71395200e+17, ...,
         8.47065600e+17,   9.40809600e+17,   9.56016000e+17]))

结果令人费解...... max_dates数组由numpy.datetime64类型组成,但min_dates数组由numpy.float64类型组成:

>>> type(max_dates[0]), type(min_dates[0])
(numpy.datetime64, numpy.float64)

知道 date列是datetime64类型:

>>>df.dtypes
id                 object
date       datetime64[ns]
numresp             int64
dtype: object

然而groupby函数仍在传播这种奇怪的类型转换,但仅适用于min_dates数组...我能够执行我希望的减法,但我' d还想知道为什么Pandas(或Numpy?)导致我的一个数组从datetime转换为float64?

编辑:

  • 我的熊猫版:0.16.2
  • 我的numpy版本:1.9.2

0 个答案:

没有答案