zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    poj 1700 Crossing River 过河问题。贪心
    Alice's Print Service
    POI 2000 ------Stripes
    Uva 1378
    hdu 3068 最长回文
    bnu Game 博弈。
    链栈的C语言实现
    链栈的C语言实现
    顺序栈C语言实现
    顺序栈C语言实现
  • 原文地址:https://www.cnblogs.com/jaysonteng/p/12874809.html
Copyright © 2011-2022 走看看