[英]How to convert row values as column names and same column names as column values in 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.