我有数据框,我希望对其进行更改,然后将其写入json
。
ID month val
0 00051f002f5a0c179d7ce191ca2c6401 2015-08-01 1
1 00051f002f5a0c179d7ce191ca2c6401 2015-08-02 0
2 00051f002f5a0c179d7ce191ca2c6401 2015-08-03 0
3 00051f002f5a0c179d7ce191ca2c6401 2015-08-04 0
4 00051f002f5a0c179d7ce191ca2c6401 2015-08-05 0
5 00051f002f5a0c179d7ce191ca2c6401 2015-08-06 0
6 00051f002f5a0c179d7ce191ca2c6401 2015-08-07 0
7 00051f002f5a0c179d7ce191ca2c6401 2015-08-08 0
8 00051f002f5a0c179d7ce191ca2c6401 2015-09-09 0
9 00051f002f5a0c179d7ce191ca2c6401 2015-09-10 0
10 00051f002f5a0c179d7ce191ca2c6401 2015-09-11 0
11 00051f002f5a0c179d7ce191ca2c6401 2015-09-12 0
我需要将其转换为此
ID month val
0 00051f002f5a0c179d7ce191ca2c6401 2015-08 1
1 00051f002f5a0c179d7ce191ca2c6401 2015-09 1
如果某些日期== 1,我需要写那个月== 0.如果不是,我应该写0,如果从12.2013到30.2016不是某些月份的信息,我应该写0。 然后我尝试将它写入json,我尝试
df['month'] = pd.to_datetime(df.month).dt.to_period('m').dt.strftime('%Y-%m')
但它只替换month
中的数据。
接下来我尝试df = df.groupby(['ID', df.month.dt.strftime('%Y-%m')]).agg(lambda v: (v == 1).any().astype(int)).reset_index()
,但它不会在此时间间隔内打印所有月份。
并尝试写入json
nielson_june = StringIO.StringIO()
d = df.groupby('ID')['month', 'val'].apply(lambda x: pd.Series(x.set_index('month')['val'].to_dict())).to_json(nielson_june, orient='index')
with open('nielsen-telecom','w') as f:
json.dump(json.loads(nielson_june.getvalue()), f, indent=2, sort_keys=True)
我该怎么做?