[Solved] Pandas: get json from data frame


You can use:

#convert int xolum to string
df['member_id'] = df.member_id.astype(str)
#reshaping and convert to months period
df.set_index('member_id', inplace=True)
df = df.unstack().reset_index(name="val").rename(columns={'level_0':'date'})
df['date'] = pd.to_datetime(df.date).dt.to_period('m').dt.strftime('%Y-%m')
#groupby by date and member_id and aggregate sum
df = df.groupby(['date','member_id'])['val'].sum()
#convert all values !=0 to 1
df = (df != 0).astype(int).reset_index()
#working in pandas 0.18.1
d = df.groupby('member_id')['date', 'val'].apply(lambda x: pd.Series(x.set_index('date')['val'].to_dict())).to_json(orient="index")
print (d)
{'19404': {'2016-07': 1, '2015-12': 0, '2015-09': 0, '2015-08': 0, '2015-11': 0, '2015-10': 0, '2015-05': 0, '2016-06': 1, '2015-06': 0, '2016-04': 0, '2016-05': 0, '2015-07': 0, '2016-03': 0, '2016-01': 0, '2016-08': 0, '2016-02': 0}, 
'19276': {'2016-07': 0, '2015-12': 0, '2015-09': 0, '2015-08': 0, '2015-11': 0, '2015-10': 0, '2015-05': 0, '2016-06': 0, '2015-06': 0, '2016-04': 0, '2016-05': 0, '2015-07': 0, '2016-03': 0, '2016-01': 1, '2016-08': 0, '2016-02': 0}, 
'19205': {'2016-07': 0, '2015-12': 0, '2015-09': 0, '2015-08': 0, '2015-11': 0, '2015-10': 0, '2015-05': 0, '2016-06': 0, '2015-06': 0, '2016-04': 0, '2016-05': 0, '2015-07': 0, '2016-03': 1, '2016-01': 0, '2016-08': 0, '2016-02': 0}}

2

solved Pandas: get json from data frame