熊猫:把数据写入json

时间:2016-08-17 21:36:00

标签: python json pandas

我有数据框,我希望对其进行更改,然后将其写入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)

我该怎么做?

0 个答案:

没有答案