如何为Pandas DataFrame设置偏移对角线值?已尝试np.fill_diagonal无效
解决方案
问题原因
np.fill_diagonal(df.values,1)无效是因为它仅填充整个DataFrame的主对角线(即(0,0)、(1,1)这类行列索引相同的位置),但你需要的是在第一列之外的列中,给1和-1的每组4行分别生成单位矩阵结构,两者的填充位置完全不同。
实现代码
import pandas as pd import numpy as np # 构造原DataFrame original_data = [[1, 0, 0, 0, 0]] * 4 + [[-1, 0, 0, 0, 0]] * 4 df = pd.DataFrame(original_data) # 生成目标后4列:两个4x4单位矩阵堆叠 target_cols = np.vstack([np.eye(4), np.eye(4)]) # 拼接第一列和目标列 result_df = pd.concat([df.iloc[:, 0], pd.DataFrame(target_cols)], axis=1) # 可选:将浮点数转为整数 result_df = result_df.astype(int)
输出结果
运行后result_df将完全匹配你需要的结构:
0 0 1 2 3 0 1 1 0 0 0 1 1 0 1 0 0 2 1 0 0 1 0 3 1 0 0 0 1 4 -1 1 0 0 0 5 -1 0 1 0 0 6 -1 0 0 1 0 7 -1 0 0 0 1
内容的提问来源于stack exchange,提问作者HippoCortex
相关产品推荐
相关产品推荐

