A - это квадратная матрица 5x5 pandas DataFrame x - это 5 (одномерный) вектор pandas Series x @ A возвращает ошибку ValueError: матрицы не выровнены, хотя обе они явно соответствуют требованиям ...

2
develarist 10 Янв 2021 в 12:42

1 ответ

Лучший ответ

См. документацию:

Кроме того, имена столбцов DataFrame и индекс другого элемента должны содержат те же значения , так как они будут выровнены перед умножение.

Так что ошибка не в размерах, а в несовпадении индексов. См. Следующий пример:

import pandas as pd

df = pd.DataFrame([[1,2],[3,4]], columns=list('ab'))
s = pd.Series([5,6])

# df @ s                                      # --> doesn't work
print(df.values @ s)                          # --> works because no column names involved
print(df.rename({'a':0, 'b':1}, axis=1) @ s)  # --> works because indices match

Или наоборот

df = pd.DataFrame([[1,2],[3,4]], index=list('ab'))
s = pd.Series([5,6])

# s @ df                             # --> doesn't work
print(s @ df.values)                 # --> works because no column names involved
print(s @ df.reset_index(drop=True)) # --> works because indices match
3
Stef 10 Янв 2021 в 13:55