#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)