Python中数据帧内JSON对象中按值聚合
我已经使用pandas将json数组作为数据帧加载到python中。我的python代码如下所示:Python中数据帧内JSON对象中按值聚合,python,json,pandas,aggregate,Python,Json,Pandas,Aggregate,我已经使用pandas将json数组作为数据帧加载到python中。我的python代码如下所示: import json import pandas as pd jsontxt = pd.read_json ('array.json') df = pd.DataFrame(jsontxt['Total-Hours']) print(df) Total-Hours 0 {'value': 3.0} 1 {'value': 2.0} 2 {'value': 1.0}
import json
import pandas as pd
jsontxt = pd.read_json ('array.json')
df = pd.DataFrame(jsontxt['Total-Hours'])
print(df)
Total-Hours
0 {'value': 3.0}
1 {'value': 2.0}
2 {'value': 1.0}
3 {'value': 5.0}
4 {'value': 3.0}
5 {'value': 5.0}
[
{
"key" : "Jacob",
"doc_count" : 11,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "AH",
"doc_count" : 2,
"Total-Hours" : {
"value" : 2.0
},
"Calculated-Category" : {
"value" : 1.0
}
},
{
"key" : "FJ",
"doc_count" : 1,
"Total-Hours" : {
"value" : 1.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "Helen",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 2.0
}
},
{
"key" : "Test",
"doc_count" : 1,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 3.0
}
},
{
"key" : "John",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 3.0
}
}
]
输出如下:
import json
import pandas as pd
jsontxt = pd.read_json ('array.json')
df = pd.DataFrame(jsontxt['Total-Hours'])
print(df)
Total-Hours
0 {'value': 3.0}
1 {'value': 2.0}
2 {'value': 1.0}
3 {'value': 5.0}
4 {'value': 3.0}
5 {'value': 5.0}
[
{
"key" : "Jacob",
"doc_count" : 11,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "AH",
"doc_count" : 2,
"Total-Hours" : {
"value" : 2.0
},
"Calculated-Category" : {
"value" : 1.0
}
},
{
"key" : "FJ",
"doc_count" : 1,
"Total-Hours" : {
"value" : 1.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "Helen",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 2.0
}
},
{
"key" : "Test",
"doc_count" : 1,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 3.0
}
},
{
"key" : "John",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 3.0
}
}
]
我想按总小时数的值对数据进行分组。如下所示:
val = df.groupby(['Total-Hours']).mean();
我的JSON如下:
import json
import pandas as pd
jsontxt = pd.read_json ('array.json')
df = pd.DataFrame(jsontxt['Total-Hours'])
print(df)
Total-Hours
0 {'value': 3.0}
1 {'value': 2.0}
2 {'value': 1.0}
3 {'value': 5.0}
4 {'value': 3.0}
5 {'value': 5.0}
[
{
"key" : "Jacob",
"doc_count" : 11,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "AH",
"doc_count" : 2,
"Total-Hours" : {
"value" : 2.0
},
"Calculated-Category" : {
"value" : 1.0
}
},
{
"key" : "FJ",
"doc_count" : 1,
"Total-Hours" : {
"value" : 1.0
},
"Calculated-Category" : {
"value" : 4.0
}
},
{
"key" : "Helen",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 2.0
}
},
{
"key" : "Test",
"doc_count" : 1,
"Total-Hours" : {
"value" : 3.0
},
"Calculated-Category" : {
"value" : 3.0
}
},
{
"key" : "John",
"doc_count" : 1,
"Total-Hours" : {
"value" : 5.0
},
"Calculated-Category" : {
"value" : 3.0
}
}
]
但是,这要求总小时数为数字。实现这一点的最佳方法是什么?Pandas目前将行值理解为dict类型,因此您可以使用从字典中提取的“value”键更新数组 下面我使用的是一个从字典中提取的值来更新数据帧。我打印更新后的数据帧,然后最后打印平均值 还要注意的是,您不需要创建新的数据帧,因为jsontxt中已经有一个数据帧
将熊猫作为pd导入
jsontxt=pd.read\u json('array.json')
打印(jsontxt)
jsontxt['Total Hours']=[x['value']表示jsontxt['Total Hours']]中的x
打印(jsontxt)
打印(jsontxt.mean())
这是输出
Total Hours
0 {'value': 3.0}
1 {'value': 2.0}
2 {'value': 1.0}
3 {'value': 5.0}
4 {'value': 3.0}
5 {'value': 5.0}
Total Hours
0 3.0
1 2.0
2 1.0
3 5.0
4 3.0
5 5.0
Total Hours 3.166667
dtype: float64
以下是我的输入文件的外观:
{
“总小时数”:[
{“值”:3.0},
{“值”:2.0},
{“值”:1.0},
{“值”:5.0},
{“值”:3.0},
{“值”:5.0}
]
}
Pandas目前将行值理解为dict类型,因此您可以使用从字典中提取的“value”键更新数组
下面我使用的是一个从字典中提取的值来更新数据帧。我打印更新后的数据帧,然后最后打印平均值
还要注意的是,您不需要创建新的数据帧,因为jsontxt中已经有一个数据帧
将熊猫作为pd导入
jsontxt=pd.read\u json('array.json')
打印(jsontxt)
jsontxt['Total Hours']=[x['value']表示jsontxt['Total Hours']]中的x
打印(jsontxt)
打印(jsontxt.mean())
这是输出
Total Hours
0 {'value': 3.0}
1 {'value': 2.0}
2 {'value': 1.0}
3 {'value': 5.0}
4 {'value': 3.0}
5 {'value': 5.0}
Total Hours
0 3.0
1 2.0
2 1.0
3 5.0
4 3.0
5 5.0
Total Hours 3.166667
dtype: float64
以下是我的输入文件的外观:
{
“总小时数”:[
{“值”:3.0},
{“值”:2.0},
{“值”:1.0},
{“值”:5.0},
{“值”:3.0},
{“值”:5.0}
]
}
您可以将输入视为dict,然后选择“总小时数”列。
“应用”将从列中创建一个新的系列,从中可以计算平均值
mean_hours = pd.DataFrame.from_dict(myjson)['Total Hours'].apply(pd.Series).mean()
或从完整输入(额外-)
您可以将输入视为dict,然后选择“总小时数”列。 “应用”将从列中创建一个新的系列,从中可以计算平均值
mean_hours = pd.DataFrame.from_dict(myjson)['Total Hours'].apply(pd.Series).mean()
或从完整输入(额外-)
能否提供“array.json”文件的内容?然后我可以试着复制这个问题的已编JSON。你能提供'array.JSON'文件的内容吗?然后我可以试着把这个问题重新解释一下。