为 pandas 数据框 Python 设置索引

Posted

技术标签:

【中文标题】为 pandas 数据框 Python 设置索引【英文标题】:Setting the index for a pandas dataframe Python 【发布时间】:2021-12-31 23:41:22 【问题描述】:

下面的代码从下面的字典中创建了一堆数据表。我正在尝试将Values 添加为所有数据表的索引参数,但它们所有的表值都变成nan。我将如何更改它,以便将索引 0 to 2 替换为 First, Second, Third

字典:

Outcomes = 
    'Values':
        'First': 
            'option 1': np.array([12,345,5412]),
            'option 2': np.array([2315,32,1]),
            'option 3': 'row 1': np.array([232,3,1]),
                         'row 2': np.array([3,4,5]),
                         'row 3': np.array([15,6,12])
        
        
    

代码:

import pandas as pd 
import numpy as np 

Values = ['First', 'Second', 'Third']

def get_nested_df(dic, concat_key="", df_dic=dict()):
   rows = k:v for k,v in dic.items() if not isinstance(v, dict)
   if rows:
      df_dic.update(concat_key: pd.DataFrame.from_dict(rows))
   for k,v in dic.items():
      if isinstance(v, dict):
         get_nested_df(v, f"concat_key k", df_dic)
   return df_dic

df_dic = get_nested_df(Outcomes)

for k,v in df_dic.items():
    #print(f"k\nv\n")
    display(pd.DataFrame(v, index=Values).style.set_caption(k).set_table_styles([
        'selector': 'caption',
        'props': [
            ('color', 'red'),
            ('font-size', '16px'),
            ('text-align', 'center')
        ]
    ]))

输出:

【问题讨论】:

v 已经是一个DataFrame,所以你可以用v.index = Values 设置它的索引。要将表格呈现为 html 吗? 【参考方案1】:

考虑改用下一个代码:

for k,v in df_dic.items():
    #print(f"k\nv\n")
    v.index = pd.Index(Values)
    v.style.set_caption(k).set_table_styles([
        'selector': 'caption',
        'props': [
            ('color', 'red'),
            ('font-size', '16px'),
            ('text-align', 'center')
        ]
    ])
    display(v)

【讨论】:

以上是关于为 pandas 数据框 Python 设置索引的主要内容,如果未能解决你的问题,请参考以下文章

python--pandas合并与连接

python--pandas删除

如何将数据和索引设置为 pandas 数据框

Python Pandas:如何将数据框列值设置为 X 轴标签

python--pandas切片

Python Pandas Dataframe 将特定的日期时间行标签设置为索引中的字符串?