迭代Pandas分组数据帧

时间:2016-08-29 01:30:58

标签: python json python-2.7 pandas

我在if ( ! wp_next_scheduled( 'prefixhourlyevent' ) ) { 中使用groupby来创建一些pandas样式数据。我无法迭代分组的json,因为它无法识别我的密钥

dataframe

错误:

import pandas as pd


df = pd.DataFrame(data=[['Group A', 10],
                       ['Group A', 12],
                       ['Group B', 22],
                       ['Group B', 25],
                       ['Group B', 26]],
                  columns = ['Group', 'Value'])

df = df.groupby('Group').agg(['mean', 'count']).reset_index()

json_data = [{'id': row['Group'],
              'name': row['Group'],
              'value': row['mean']} for index, row in df.iteritems()]
print json_data

期望的输出:

KeyError: 'Group'

2 个答案:

答案 0 :(得分:1)

作为documentediteritems遍历列(特别是名称/列对)。看起来你想要iterrows。 (您仍然需要将其更改为访问['Value', 'mean']而不是['mean'],因为您创建了一个包含多索引列的DataFrame。)

答案 1 :(得分:1)

试试这个:这是指向DataFrame.to_json()

的链接
df = df.groupby('Group').mean().reset_index().rename(columns = {'Group':"id" })
df['name'] = df['id']
df.to_json(orient="records")

'[{"id":"Group A","Value":11.0,"name":"Group A"},{"id":"Group B","Value":24.3333333333,"name":"Group B"}]'

您可以这样重新排序JSON输出:

df[['id','name', 'Value', ]].to_json(orient="records")

'[{"id":"Group A","name":"Group A","Value":11.0},{"id":"Group B","name":"Group B","Value":24.3333333333}]'