>>> df = pd.DataFrame(zip(np.random.rand(5).tolist(), [1]*5, [dt.date.today()]*5), columns=list('abc'))
>>> df
a b c
0 0.896739 1 2017-09-24
1 0.473168 1 2017-09-24
2 0.100591 1 2017-09-24
3 0.870899 1 2017-09-24
4 0.716934 1 2017-09-24
>>> print df.groupby('c').a.apply(lambda x: x.max()).index
Index([2017-09-24], dtype='object', name=u'c')
>>> df.groupby(['b', 'c']).a.apply(lambda x: x.max()).index
MultiIndex(levels=[[1], [2017-09-24 00:00:00]], labels=[[0], [0]],
names=[u'b', u'c'])
>>> print df.groupby(['b', 'c']).a.max().index
MultiIndex(levels=[[1], [2017-09-24]], labels=[[0], [0]],
names=[u'b', u'c'])
为什么在第二种情况下,分组时日期字段转换为日期时间(仅限)?你知道吗
我用的是熊猫0.19.2
实际上,只有在第二种情况下,日期字段才会转换为时间戳。在案例1和案例3中,日期字段是Datetime:
但是一个非常有趣的观察。索引和多索引以及系列.max()和系列.应用()在处理问题时似乎没有始终如一地执行datetime.date日期物体。你知道吗
解决方案:如果将
dt.date.today()
转换为熊猫。时间戳或者numpy.datetime64从一开始,日期字段都是一致的时间戳:相关问题 更多 >
编程相关推荐