Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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中数据帧内JSON对象中按值聚合_Python_Json_Pandas_Aggregate - Fatal编程技术网

Python中数据帧内JSON对象中按值聚合

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}

我已经使用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}
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'文件的内容吗?然后我可以试着把这个问题重新解释一下。