如何在熊猫中按日期时间对数据进行分组?

时间:2020-01-03 19:56:55

标签: python pandas datetime

我有一个如下所示的数据

data = [(u'Del', datetime.datetime(2019, 11, 1, 0, 0), 59L), (u'Bom', datetime.datetime(2019, 11, 1, 0, 0), 449L), (u'Del', datetime.datetime(2019, 12, 1, 0, 0), 0L), (u'Bom', datetime.datetime(2019, 12, 1, 0, 0), 45L)]

现在我想根据时间对数据进行分组,使其看起来像这样

data = [
         [(u'Del', datetime.datetime(2019, 11, 1, 0, 0), 59L), (u'Bom', datetime.datetime(2019, 11, 1, 0, 0), 449L)] 
        ,[(u'Del', datetime.datetime(2019, 12, 1, 0, 0), 0L), (u'Bom', datetime.datetime(2019, 12, 1, 0, 0), 45L)]
       ]

如您所见,现在是列表列表,其中列表内有两个列表,每个列表包含相似的datetime。例如,第一个子列表如下所示

[(u'Del', datetime.datetime(2019, 11, 1, 0, 0), 59L), (u'Bom', datetime.datetime(2019, 11, 1, 0, 0), 449L)]

第一个子列表中的项目包含相似的日期时间datetime.datetime(2019, 11, 1, 0, 0)

第二个子列表如下

[(u'Del', datetime.datetime(2019, 12, 1, 0, 0), 0L), (u'Bom', datetime.datetime(2019, 12, 1, 0, 0), 45L)]

第一个子列表中的项目包含相似的日期时间datetime.datetime(2019, 12, 1, 0, 0)

通过执行类似的操作,我可以基于datetime对数据进行排序(尽管在这种情况下,数据已经由datetime进行了排序)

import pandas as pd
import datetime
import psycopg2

df = pd.DataFrame(data)
df['Date'] =pd.to_datetime(df[1])
df = df.sort_values(by='Date')

但是我无法根据排序时间对它们进行分组。如何使用pandas来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作

df = pd.DataFrame(data)
df.columns = ['place','date','value']


output = [x[1].values for x in df.groupby(date)]

输出如下:

[[[u'Del', Timestamp('2019-11-01 00:00:00'), 59], [u'Bom', Timestamp('2019-11-01 00:00:00'), 449]], [[u'Del', Timestamp('2019-12-01 00:00:00'), 0], [u'Bom', Timestamp('2019-12-01 00:00:00'), 45]]]