熊猫按三天或两周或四个月的时间分组

时间:2020-02-20 11:45:56

标签: python pandas

我是熊猫初学者。我想三天或两周或四个月

我有以下数据:

a = [{"content": '11', "time": 1577870427}, 
     {"content": '44', "time": 1577870427},
     {"content": '22', "time": 1578043227},
     {"content": '33', "time": 1578129627}, 
     {"content": '44', "time": 1578216027},
     {"content": '55', "time": 1578302427}, 
     {"content": '66', "time": 1577956827}]

我想要:

2020-01-01: [
     {"content": '11', "time": '2020-01-01'},
     {"content": '44', "time": '2020-01-01'},
     {"content": '22', "time": '2020-01-02'},
    ]

 2020-01-03: [
     {"content": '33', "time": '2020-01-03'}, 
     {"content": '44', "time": '2020-01-04'},
    ]

2020-01-05: [
     {"content": '55', "time": '2020-01-05'}, 
     {"content": '66', "time": '2020-01-06'}
    ]

我的代码

index = pd.to_datetime([i['time'] for i in a], unit='s')
df = pd.Series(a,index)

d1 = {k: v.to_dict('r') for k, v in df.groupby('2d')}
print(d1)

1 个答案:

答案 0 :(得分:1)

使用:

#convert values to DataFrame
df = pd.DataFrame(a)
#convert column to datetimes
d = pd.to_datetime(df['time'], unit='s')
#change format of datetimes
df['time'] = d.dt.strftime('%Y-%m-%d')
#create DatetimeIndex
df.index = d

#create nested dictionaries
d = {k.strftime('%Y-%m-%d'): v.to_dict('r') for k, v in df.groupby(pd.Grouper(freq='2D'))}

或者:

d = {k.strftime('%Y-%m-%d'): v.to_dict('r') for k, v in df.resample('2D')}

print (d)
{'2020-01-01': [{'content': '11', 'time': '2020-01-01'}, 
                {'content': '44', 'time': '2020-01-01'}, 
                {'content': '66', 'time': '2020-01-02'}], 
'2020-01-03': [{'content': '22', 'time': '2020-01-03'}, 
               {'content': '33', 'time': '2020-01-04'}], 
 '2020-01-05': [{'content': '44', 'time': '2020-01-05'}, 
                {'content': '55', 'time': '2020-01-06'}]}