Как преобразовать значения столбцов в Martix с помощью Python

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Спросите, есть ли какие-либо предложения по преобразованию значений столбцов в формат матрицы, как показано ниже:

введите описание изображения здесь

Комментарии:

1. Какой у вас формат данных?

Ответ №1:

Вы можете проверить add.outer из numpy

 import numpy as np 

out = pd.DataFrame(np.add.outer(df.col.values, df.col.values), index=df.col, columns=df.col)
col   A   B   C   D   E   F
col                        
A    AA  AB  AC  AD  AE  AF
B    BA  BB  BC  BD  BE  BF
C    CA  CB  CC  CD  CE  CF
D    DA  DB  DC  DD  DE  DF
E    EA  EB  EC  ED  EE  EF
F    FA  FB  FC  FD  FE  FF
  

Комментарии:

1. вы не определили df здесь

2. df может быть определен как —- lst = [«A», «B»,»C»,»D»,»E»] df = pd.DataFrame(lst,columns=[‘col’])

Ответ №2:

Вы можете сделать это, используя только numpy

 test = np.array(['A','B','C','D','E'])

one = test[np.tile(np.arange(5)[None,:],(5,1))]
two = test[np.tile(np.arange(5)[:,None],(1,5))]
inds = np.char.add(two,one)
  

Ответ №3:

Не-pandas:

 items = ['A', 'B','C','D','E']

# Make combinations
pairs = [f"{colA[i]}{colA[j]}" for i in range(len(items)) for j in range(len(items))]

# Find max character count per combo
max_sz = max(map(len, pairs))

# Set initial row to items list
output = [[" "]   items]

# Append additional rows based on starting character
for c in items:
    tmp = [c]   [p for p in pairs if str(p).startswith(c)]
    output.append(tmp)

# Format with specified padding from max_sz
final = ""
for ln in output:
    final  = " ".join([f"{i:>{max_sz}}" for i in ln])   "n"

print(final)
  

Вывод:

     A  B  C  D  E
 A AA AB AC AD AE
 B BA BB BC BD BE
 C CA CB CC CD CE
 D DA DB DC DD DE
 E EA EB EC ED EE
  

Ответ №4:

Простое решение, я думаю:

 import numpy as np
m = np.repeat(list("ABCDE"), 5).reshape(5,5)
output = np.char.add(m, m.T)