我是熊猫初学者。
我有以下数据:
a = [{"content": '1', "time": 1577870427},
{"content": '4', "time": 1577870427},
{"content": '2', "time": 1577956827},
{"content": '3', "time": 1580548827},
{"content": '4', "time": 1580635227},
{"content": '5', "time": 1583054427},
{"content": '6', "time": 1583140827}]
我想要:
2020-01: [
{"content": '1', "time": '2020-01-01'},
{"content": '4', "time": '2020-01-01'},
{"content": '2', "time": '2020-01-02'},
]
2020-02: [
{"content": '3', "time": '2020-02-01'},
{"content": '4', "time": '2020-02-02'},
]
2020-03: [
{"content": '5', "time": '2020-03-01'},
{"content": '6', "time": '2020-03-02'}
]
答案 0 :(得分:2)
您可以使用time
参数通过to_datetime
将unit
列转换为日期时间,对于自定义格式,请使用Series.dt.strftime
:
df = pd.DataFrame(a)
d = pd.to_datetime(df['time'], unit='s')
df['time'] = d.dt.strftime('%Y-%m-%d')
g = d.dt.strftime('%Y-%m')
d1 = {k: v.to_dict('r') for k, v in df.groupby(g)}
答案 1 :(得分:0)
首先,您应该将字典列表转换为大熊猫DataFrame
。如您所见here,这很简单:
import pandas as pd
data = pd.DataFrame(a)
接下来,您要将time
列转换为日期时间对象,而不是整数。我所知道的最好方法是在熊猫中使用to_datetime函数。请参阅文档以获取更多详细信息。
data['time'] = pd.to_datetime(data['time'], unit = 's') #should do the trick, but could not test yet...
对于实际分组,pandas提供了非常强大的groupby函数,该函数针对所有DataFrame
对象实现。同样,文档将提供详细信息。
data.groupby(['time'])
请注意,如果输出不完全是您想要的输出,则可以使用groupby
轻松地对其进行修改,因为它接受映射,函数,标签或标签列表作为参数。如果您稍微玩一点,这应该可以让您得到想要的东西。