如何为Pandas DataFrame中的列表添加子列索引(如sample 1)?
为Pandas DataFrame添加多层列索引(主列+子列)
你需要给DataFrame设置多层列索引(MultiIndex),让主列统一为Processing,子列对应Sample 1到Sample N。以下是修改后的完整代码和关键说明:
修改后的代码
import random import numpy as np import pandas as pd low = 0 high = 500 sample_size = 5 def get_numbers(low, high, sample_size): return random.sample(range(low, high), sample_size) # 生成多个numpy数组 p_one = np.array(get_numbers(low, high, sample_size), dtype=int) p_two = np.array(get_numbers(low, high, sample_size), dtype=int) p_three = np.array(get_numbers(low, high, sample_size), dtype=int) p_four = np.array(get_numbers(low, high, sample_size), dtype=int) p_five = np.array(get_numbers(low, high, sample_size), dtype=int) # 将数组列表转为DataFrame,转置后让每个数组对应一列 p = [p_one, p_two, p_three, p_four, p_five] df_rawdata = pd.DataFrame(p).T # 构造多层列索引 multi_columns = pd.MultiIndex.from_arrays( [['Processing'] * len(p), [f'Sample {i+1}' for i in range(len(p))]] ) # 为DataFrame设置多层列索引 df_rawdata.columns = multi_columns # 查看结果 print(df_rawdata)
关键说明
- 调整DataFrame结构:原代码用
list(zip(p))会把每个数组打包成一行的单个元素,导致仅一列。直接传入数组列表并转置(.T),让每个数组对应一列,行数匹配采样值数量。 - 构造多层索引:用
pd.MultiIndex.from_arrays创建两层索引:- 第一层(主列):重复
Processing,对应所有子列 - 第二层(子列):自动生成
Sample 1到Sample 5的命名
- 第一层(主列):重复
- 设置索引:将构造好的多层索引赋值给DataFrame的
columns属性,即可实现你想要的展示效果。
内容的提问来源于stack exchange,提问作者Nicholas TI
相关产品推荐
相关产品推荐

