Python如何创建行和列均带双层索引的Pandas DataFrame
Pandas 行列双层索引DataFrame实现方案
前提假设:你已计算得到N*N的原子间距离矩阵
dist_matrix,已有的单层索引原子符号列表为atom_symbols,或者已经生成了单层原子符号索引的DataFrame对象single_index_df
- 方式1:基于距离矩阵直接生成双层索引DataFrame
import pandas as pd # 生成与原子符号一一对应的数字序号序列 num_index = list(range(len(atom_symbols))) # 构造双层MultiIndex:第一层为数字序号,第二层为原子符号 multi_idx = pd.MultiIndex.from_arrays( [num_index, atom_symbols], names=["序号", "原子符号"] # 可自定义索引层名称,无需可删除该参数 ) # 行、列均使用上述双层索引创建DataFrame df = pd.DataFrame( dist_matrix, index=multi_idx, columns=multi_idx )
如果存在重复原子符号也无需担心,第一层唯一的数字序号会避免索引冲突问题
- 方式2:对已有单层索引DataFrame直接修改索引
如果你已经生成了仅以原子符号为索引的DataFrame,可以直接替换原有索引,无需复用原始距离矩阵:
df = single_index_df.copy() num_index = list(range(len(df))) # 替换行索引为双层结构 df.index = pd.MultiIndex.from_arrays([num_index, df.index], names=["序号", "原子符号"]) # 替换列索引为双层结构 df.columns = pd.MultiIndex.from_arrays([num_index, df.columns], names=["序号", "原子符号"])
内容的提问来源于stack exchange,提问作者Another.Chemist
相关产品推荐
相关产品推荐

