У меня есть фреймворк с двумя категориальными столбцами и третий с целыми числами:
import pandas as pd
df1 = pd.DataFrame({
'First': ['A','A','A','B','B','C'],
'Second': ['B','C','D','C','D','D'],
'Value': [1,2,3,4,5,6]}
)
df1
First Second Value
0 A B 1
1 A C 2
2 A D 3
3 B D 4
4 B D 5
5 C D 6
Я хотел бы получить соответствующую треугольную матрицу, как (отсутствующие значения могут быть НА):
A B C D
1 2 3 A
4 5 B
6 C
и, наконец, изобразите его на треугольной тепловой карте, которую, как мне кажется, я смогу сделать с помощью этот вопрос, который, однако, требует ввода большого количества замаскированных массивов. Также приветствуются другие решения для построения графика без использования numpy.
Любые питонические идеи о том, как этого добиться?
РЕДАКТИРОВАТЬ:
Я понял, что приведенный мной пример был слишком изящным. Мои колонки не организованы так, как указано выше. Так у меня что-то вроде этого:
df1 = pd.DataFrame({
'First': ['D','C','B','A','C','A','B','D','B','C'],
'Second': ['E','E','C','D','D','E','E','B','A','A'],
'Value': [1,2,3,4,5,6,7,8,9,10]}
)
First Second Value
0 D E 1
1 C E 2
2 B C 3
3 A D 4
4 C D 5
5 A E 6
6 B E 7
7 D B 8
8 B A 9
9 C A 10
и
df1.pivot('First','Second','Value')
производит
Second A B C D E
First
A NaN NaN NaN 4.0 6.0
B 9.0 NaN 3.0 NaN 7.0
C 10.0 NaN NaN 5.0 2.0
D NaN 8.0 NaN NaN 1.0
Нетреугольная, несимметричная матрица. Мне нужно иметь одинаковое количество строк и столбцов и подтолкнуть все эти NaN к краям, чтобы создать треугольник. Pivot не кажется возможным решением
РЕДАКТИРОВАТЬ2
Решение и желаемый результат существуют и следующие:
A B C D E
A NaN 9 10 4 6
B NaN NaN 3 8 7
C NaN NaN NaN 5 2
D NaN NaN NaN NaN 1
E NaN NaN NaN NaN NaN