Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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_Pandas_Dataframe - Fatal编程技术网

Python 是否将已排序的表从数据帧发送到前端?

Python 是否将已排序的表从数据帧发送到前端?,python,json,pandas,dataframe,Python,Json,Pandas,Dataframe,我正在对财务数据进行一些计算,我的原始json如下所示: [ { "company": "Apple Inc", "earnings_yield": "0.032220032460810885", "roic": "0.18313585674458502" }, { "company": "Microso

我正在对财务数据进行一些计算,我的原始json如下所示:

[
  {
    "company": "Apple Inc",
    "earnings_yield": "0.032220032460810885",
    "roic": "0.18313585674458502"
  },
  {
    "company": "Microsoft Corporation",
    "earnings_yield": "0.0360941393518613",
    "roic": "0.1955875358727057"
  }
]
{
  "company": {
    "0": "Apple Inc",
    "1": "Microsoft Corporation"
  },
  "earnings_yield": {
    "0": 0.0322200325,
    "1": 0.0360941394
  },
  "roic": {
    "0": 0.1831358567,
    "1": 0.1955875359
  },
  "roic_rank": {
    "0": 1,
    "1": 2
  },
  "ey_rank": {
    "0": 1,
    "1": 2
  },
  "sum_rank": {
    "0": 2,
    "1": 4
  }
}
'{"0":{"company":{"0":"Apple Inc"},"earnings_yield":{"0":"0.032220032460810885"},"roic":{"0":"0.20313585674458502"},"roic_rank":{"0":2.0},"ey_rank":{"0":1.0},"sum_rank":{"0":3.0}},"1":{"company":{"1":"Microsoft Corporation"},"earnings_yield":{"1":"0.0360941393518613"},"roic":{"1":"0.1955875358727057"},"roic_rank":{"1":1.0},"ey_rank":{"1":2.0},"sum_rank":{"1":3.0}}}'
我通过pandas数据框运行json,并在其中对它们进行排序:

df = pd.DataFrame(companies)
df['roic_rank'] = df['roic'].rank()
df['ey_rank'] = df['earnings_yield'].rank()
df['sum_rank'] = df['ey_rank'] + df['roic_rank'].rank()
返回:

                 company  earnings_yield    roic  roic_rank  ey_rank  sum_rank
0              Apple Inc          0.0322  0.1831        1.0      1.0       2.0
1  Microsoft Corporation          0.0361  0.1956        2.0      2.0       4.0
将已排序的表返回到前端,以便以升序/降序(在
sum\u rank
上)的下拉列表形式很好地显示它的好方法是什么

如果我只做
df.to_json()
,我所有关于熊猫的工作都会被扔出窗口,因为json是这样返回的:

[
  {
    "company": "Apple Inc",
    "earnings_yield": "0.032220032460810885",
    "roic": "0.18313585674458502"
  },
  {
    "company": "Microsoft Corporation",
    "earnings_yield": "0.0360941393518613",
    "roic": "0.1955875358727057"
  }
]
{
  "company": {
    "0": "Apple Inc",
    "1": "Microsoft Corporation"
  },
  "earnings_yield": {
    "0": 0.0322200325,
    "1": 0.0360941394
  },
  "roic": {
    "0": 0.1831358567,
    "1": 0.1955875359
  },
  "roic_rank": {
    "0": 1,
    "1": 2
  },
  "ey_rank": {
    "0": 1,
    "1": 2
  },
  "sum_rank": {
    "0": 2,
    "1": 4
  }
}
'{"0":{"company":{"0":"Apple Inc"},"earnings_yield":{"0":"0.032220032460810885"},"roic":{"0":"0.20313585674458502"},"roic_rank":{"0":2.0},"ey_rank":{"0":1.0},"sum_rank":{"0":3.0}},"1":{"company":{"1":"Microsoft Corporation"},"earnings_yield":{"1":"0.0360941393518613"},"roic":{"1":"0.1955875358727057"},"roic_rank":{"1":1.0},"ey_rank":{"1":2.0},"sum_rank":{"1":3.0}}}'
你可以试试groupby

json = df.groupby(level=0).apply(lambda x: x.to_dict(orient='records'))
json = json.to_json()
输出将如下所示:

[
  {
    "company": "Apple Inc",
    "earnings_yield": "0.032220032460810885",
    "roic": "0.18313585674458502"
  },
  {
    "company": "Microsoft Corporation",
    "earnings_yield": "0.0360941393518613",
    "roic": "0.1955875358727057"
  }
]
{
  "company": {
    "0": "Apple Inc",
    "1": "Microsoft Corporation"
  },
  "earnings_yield": {
    "0": 0.0322200325,
    "1": 0.0360941394
  },
  "roic": {
    "0": 0.1831358567,
    "1": 0.1955875359
  },
  "roic_rank": {
    "0": 1,
    "1": 2
  },
  "ey_rank": {
    "0": 1,
    "1": 2
  },
  "sum_rank": {
    "0": 2,
    "1": 4
  }
}
'{"0":{"company":{"0":"Apple Inc"},"earnings_yield":{"0":"0.032220032460810885"},"roic":{"0":"0.20313585674458502"},"roic_rank":{"0":2.0},"ey_rank":{"0":1.0},"sum_rank":{"0":3.0}},"1":{"company":{"1":"Microsoft Corporation"},"earnings_yield":{"1":"0.0360941393518613"},"roic":{"1":"0.1955875358727057"},"roic_rank":{"1":1.0},"ey_rank":{"1":2.0},"sum_rank":{"1":3.0}}}'

预期的json输出是什么?可能是
df.to_dict(“records”)
?一些带有对象数组的排序json,其中第一个元素是具有最低“sum_rank”的索引。您能解释一下这是如何工作的吗?理想情况下,我希望订单基于sum_秩。您的lambda在表中按索引对其进行排序?因此,即使我运行任何
df=df.sort\u值(按class='sum\u rank')
或任何东西。索引将保持不变-不确定这是否解决了我的问题。好的,您可以将df的索引设置为sum_rank,然后对其应用groupby
df=df.set_index('sum_rank')
json=df.groupby(level=0)。apply(lambda x:x.to_dict(orient='records'))
json=json.to_json()
有关groupby引用,请参阅()