【问题标题】:Set diagonal values in a Dataframe在 Dataframe 中设置对角线值
【发布时间】:2022-12-17 02:48:51
【问题描述】:

已经问过类似的问题,但我仍然无法提出解决方案。

我有一个这样形状的熊猫数据框:

 1     0     0     0     0
 1     0     0     0     0
 1     0     0     0     0
 1     0     0     0     0
-1     0     0     0     0
-1     0     0     0     0
-1     0     0     0     0
-1     0     0     0     0

我想把它做成这样的:

 1     1     0     0     0
 1     0     1     0     0
 1     0     0     1     0
 1     0     0     0     1
-1     1     0     0     0
-1     0     1     0     0
-1     0     0     1     0
-1     0     0     0     1

我试过 np.fill_diagonal(df.values,1) 但没有用。

【问题讨论】:

  • 如果第一列(1/-1)是一列还是索引?列名是什么?

标签: python pandas dataframe diagonal


【解决方案1】:

假设第一列确实是一列并且您想忽略它:

a = df.to_numpy()
idx = np.arange(a.shape[0])
col = np.arange(a.shape[0])%(a.shape[1]-n_ignore)+n_ignore
a[idx, col] = 1

df2 = pd.DataFrame(a, index=df.index, columns=df.columns)

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2016-09-15
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多