簡體   English   中英

Python - 如果列名和行名相同,則轉換值

[英]Python - convert values if column and row names are the same

我有一個如下的 df - 如果只有列名等於行名,我想做的是將1轉換為0

打印(df)

         name  seq102681  seq103  seq11
0     seq102681     1       0      0
1      seq103       0       1      0
2       seq11       1       1      1

所需的 output 應該是:

         name  seq102681  seq103  seq11
0     seq102681     0       0      0
1      seq103       0       0      0
2       seq11       1       1      0

我嘗試使用交叉點,但它不起作用。

import pandas as pd
df = pd.read_csv('file.csv')

intersection = df.index & df.columns
for item in intersection:
    df.loc[item, item] = 0
print(df)

Note:有時會有多行同名,但所有列名都是唯一的。

謝謝你。

實際上,您想更改 dataframe (Matrix) 的對角線。 所以你可以使用這個代碼:

df.values[[np.arange(df.shape[0])]*2] = 0

您也可以使用Numpy執行此操作:

import numpy as np
np.fill_diagonal(df.values, 0)
col_list = list(df.columns)
col_list.remove('name')

for col in col_list:
  df.loc[df['name'] == col, col] = 0
  
   for col in df.columns:
        df.loc[df['name'] == col, col] = 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM