pandas對角線值修改


思路:

1、先將DataFrame數據轉換為numpy

2、通過numpy來修改對角線值

3、再將數據轉換為DataFrame

代碼:

import pandas as pd
import numpy as np

# 數據
df = pd.DataFrame(np.arange(16).reshape((4, 4)), index=['a', 'b', 'c', 'd'], columns=['i', 'j', 'k', 'f'])
>>df:
     i    j    k    f
a    0    1    2    3
b    4    5    6    7
c    8    9    10    11
d    12   13   14    15


# 轉換為numpy
dia_dt = df.values
>>dia_dt:
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

# 修改對角線數據
dia_i = list(range(len(df)))  # 獲取numpy對角線索引
>>dia_i:
[0, 1, 2, 3]

dia_dt[dia_i, dia_i] = 0  # 通過索引修改值
>>dia_dt:
array([[ 0,  1,  2,  3],
       [ 4,  0,  6,  7],
       [ 8,  9,  0, 11],
       [12, 13, 14,  0]])

# 將數據轉換回DataFrame
df = pd.DataFrame(dia_dt, index=df.index, columns=df.columns)
>>df:
     i    j    k    f
a    0    1    2    3
b    4    0    6    7
c    8    9    0    11
d    12   13   14   0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM