为了账号安全,请及时绑定邮箱和手机立即绑定

Python pandas 数据框输出格式

Python pandas 数据框输出格式

尚方宝剑之说 2022-05-24 16:28:47
我需要以特定格式保存数据框,但我不知道如何更改该格式(或者可以这样更改)。我有json:{  'criteria A': {    'topicA': [6, 2, 7],    'topicB': [0, 6, 9]  },  'criteria B': {    'topicA': [6, 4, 8],    'topicB': [8, 6, 1]  }}我试过保存我的框架:df = pd.DataFrame(json)df.to_csv('test.csv')但它将数组保存为单元格值:------------------------------------|        | criteria A | criteria B |------------------------------------| topicA | [3, 8, 9]  | [6, 1, 0]  |------------------------------------| topicB | [5, 4, 9]  | [2, 9, 9]  |------------------------------------我唯一要更改的是数组输出和合并标准*单元格以获得如下内容:------------------------------------|        | criteria A | criteria B |------------------------------------| topicA | 3 | 8 | 9  | 6 | 1 | 0  |------------------------------------| topicB | 5 | 4 | 9  | 2 | 9 | 9  |------------------------------------所以标准是 3 行宽,每个数组值都放在自己的单元格中。熊猫允许这种格式吗?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

考虑来自 json 的数据框,如下所示:


       criteria A criteria B

topicA  [6, 2, 7]  [6, 4, 8]

topicB  [0, 6, 9]  [8, 6, 1]

您可以执行以下操作来创建多索引:


(pd.concat([pd.DataFrame(df[i].tolist()) for i in df.columns],axis=1,keys=df.columns)

     .set_index(df.index))

输出:


            criteria A       criteria B      

                0  1  2          0  1  2

topicA          6  2  7          6  4  8

topicB          0  6  9          8  6  1

Excel 视图:

//img1.sycdn.imooc.com//628c976c0001f13709800204.jpg

查看完整回答
反对 回复 2022-05-24
?
HUX布斯

TA贡献1876条经验 获得超6个赞

这是一个棘手的问题。我认为你最好的选择是去做这样的事情。


------------------------------------

|        |CA |CA |CA  |CB |CB |CB  |

------------------------------------

| topicA | 3 | 8 | 9  | 6 | 1 | 0  |

------------------------------------

| topicB | 5 | 4 | 9  | 2 | 9 | 9  |

------------------------------------


查看完整回答
反对 回复 2022-05-24
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您必须更改列以匹配所需的格式,然后保存。我不确定是否有办法将列表格式的数据直接保存到这个'| | ' 格式。


import pandas as pd

json = {

  'criteria A': {

    'topicA': [6, 2, 7],

    'topicB': [0, 6, 9]

  },

  'criteria B': {

    'topicA': [6, 4, 8],

    'topicB': [8, 6, 1]

  }

}


df = pd.DataFrame(json)

df['criteria A'] = [' | '.join(str(el) for el in row) for row in df['criteria A'].values]

df['criteria B'] = [' | '.join(str(el) for el in row) for row in df['criteria B'].values]

一个 html 视图df.to_html看起来像这样。


<table border="1" class="dataframe">

  <thead>

    <tr style="text-align: right;">

      <th></th>

      <th>criteria A</th>

      <th>criteria B</th>

    </tr>

  </thead>

  <tbody>

    <tr>

      <th>topicA</th>

      <td>6 | 2 | 7</td>

      <td>6 | 4 | 8</td>

    </tr>

    <tr>

      <th>topicB</th>

      <td>0 | 6 | 9</td>

      <td>8 | 6 | 1</td>

    </tr>

  </tbody>

</table>


查看完整回答
反对 回复 2022-05-24
  • 3 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信