Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在分组数据帧上迭代_Python_Json_Python 2.7_Pandas - Fatal编程技术网

Python 在分组数据帧上迭代

Python 在分组数据帧上迭代,python,json,python-2.7,pandas,Python,Json,Python 2.7,Pandas,我正在pandas中使用groupby创建一些json样式的数据。我在迭代分组的数据帧时遇到问题,因为它无法识别我的密钥 import pandas as pd df = pd.DataFrame(data=[['Group A', 10], ['Group A', 12], ['Group B', 22], ['Group B', 25],

我正在
pandas
中使用
groupby
创建一些
json
样式的数据。我在迭代分组的
数据帧时遇到问题,因为它无法识别我的密钥

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'
期望输出:

[{
    'id': 'Group A',
    'name': 'Group A',
    'value': 11
}, {
    'id': 'Group B',
    'name': 'Group B',
    'value': 24.33333
    }]

正如,
iteritems
在列(特别是名称/列对)上迭代。看起来您需要
ItErrors
。(您仍然需要将其更改为访问
['Value','mean']
,而不是
['mean']
,因为您创建了一个具有多索引列的数据帧。)

尝试以下操作:这里是指向

您可以通过以下方式对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}]'

谢谢,我不知道如何引用
“意思”
。这意味着意义为
['Value','mean']
,但是
列没有标签,这是如何引用的?@user2242044:你说的“没有标签”是什么意思?“Group”列可以直接使用
[“Group”]
访问,因为它下面没有额外的索引级别。@BrenBam使用
行['Group']
似乎在添加整个数据框`Group A Name:0,dtype:object,`@user2242044:Ah,你说得对。您必须执行
行['Group','']
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}]'