Как изменить все элементы выше главной диагонали матрицы
Есть pandas квадратная матрица. Как заполнить нулями значения выше главной диагонали нулями? Пытался через np.triu_indices, но это для numpy матриц.
Ответы (2 шт):
Автор решения: splash58
→ Ссылка
если выше диагонали
import numpy as np
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7,8,9]],
columns=['a','b','c'], index=['x','y','z'])
df[:] = np.tril(df.values)
print(df)
a b c
x 1 0 0
y 4 5 0
z 7 8 9
а если, с учетом предыдущего вопроса, диагональ тоже
import numpy as np
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7,8,9]])
df[:] = np.tril(df.values, k=-1)
print(df)
0 1 2
0 0 0 0
1 4 0 0
2 7 8 0
Автор решения: Алексей Р
→ Ссылка
n = 5
df = pd.DataFrame(np.random.randint(1, 10, n * n).reshape(n, -1))
print('Исходный фрейм:', df, sep='\n')
df = df.apply(lambda x: [0] * x.name + x[x.name:].tolist())
print('\nРезультат:', df, sep='\n')
Исходный фрейм:
0 1 2 3 4
0 7 7 4 3 6
1 6 4 1 6 7
2 7 7 5 4 8
3 9 4 4 3 8
4 3 7 8 7 8
Результат:
0 1 2 3 4
0 7 0 0 0 0
1 6 4 0 0 0
2 7 7 5 0 0
3 9 4 4 3 0
4 3 7 8 7 8