Python 熊猫:将数据帧写入json

Python 熊猫:将数据帧写入json,python,json,pandas,dataframe,resampling,Python,Json,Pandas,Dataframe,Resampling,我有数据帧: date id 0 12-12-2015 123 1 13-12-2015 123 2 15-12-2015 123 3 16-12-2015 123 4 18-12-2015 123 5 12-12-2015 456 6 13-12-2015 456 7 15-12-2015 456 我需要将日期计数到id 我尝试df.groupby('id')['date'].count() 我需要获取(如果日期不在id中,则等于0) 然

我有数据帧:

         date   id
0  12-12-2015  123
1  13-12-2015  123
2  15-12-2015  123
3  16-12-2015  123
4  18-12-2015  123
5  12-12-2015  456
6  13-12-2015  456
7  15-12-2015  456
我需要将日期计数到id 我尝试
df.groupby('id')['date'].count()
我需要获取(如果日期不在id中,则等于0)

然后以这种格式将其写入
json
文件

{
"1234567890abcdef1234567890abcdef": {
    "2016-06": 1, 
    "2016-05": 0, 
    "2016-04": 0, 
    "2016-03": 1, 
    "2016-02": 1, 
    "2016-01": 0
}, 
"0987654321abcdef1234567890abcdef": {
    "2016-06": 1, 
    "2016-05": 1, 
    "2016-04": 1, 
    "2016-03": 0, 
    "2016-02": 0, 
    "2016-01": 0
}
}

我如何才能做到这一点?

首先使用:

然后:


你可以说,如果我有某个时期的日期(例如
2014-12-01-2016-07-05
),但有些用户只有
2015-08-15
,还有其他日期。如何打印所有日期
df=df.groupby('id')。重新采样('D').size()。重置索引(name='val')
(不仅仅是在某些日期之间,当他有
1
)以及如何将其添加到文件中?我添加了文件的结构,我怎么能用这种格式写呢?
{
"1234567890abcdef1234567890abcdef": {
    "2016-06": 1, 
    "2016-05": 0, 
    "2016-04": 0, 
    "2016-03": 1, 
    "2016-02": 1, 
    "2016-01": 0
}, 
"0987654321abcdef1234567890abcdef": {
    "2016-06": 1, 
    "2016-05": 1, 
    "2016-04": 1, 
    "2016-03": 0, 
    "2016-02": 0, 
    "2016-01": 0
}
df['date'] = pd.to_datetime(df.date)
df.set_index('date', inplace=True)

df = df.groupby('id').resample('D').size().reset_index(name='val')
print (df)

     id       date  val
0   123 2015-12-12    1
1   123 2015-12-13    1
2   123 2015-12-14    0
3   123 2015-12-15    1
4   123 2015-12-16    1
5   123 2015-12-17    0
6   123 2015-12-18    1
7   456 2015-12-12    1
8   456 2015-12-13    1
9   456 2015-12-14    0
10  456 2015-12-15    1
#remove 00:00:00 from datetime
df['date'] = df.date.dt.date
print (df.groupby('id').apply(lambda x: x.set_index('date')['val'].to_dict()).to_json())

{"123":{"2015-12-18":1,"2015-12-15":1,"2015-12-12":1,"2015-12-16":1,"2015-12-13":1,"2015-12-17":0,"2015-12-14":0},
"456":{"2015-12-15":1,"2015-12-12":1,"2015-12-13":1,"2015-12-14":0}}