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}]'