Как я могу получить значение linalg в рамках dataframe - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь получить значение linalg для каждого индекса в DataFrame 'df'.

param_array = np.array([[a1, b1, c1]])
df['linalg'] = df.loc[:,['a','b','c']].apply(lambda x: np.linalg.norm(param_array - x))

, но появляется сообщение об ошибке, как показано ниже

ValueError: ('operands could not be broadcast together with shapes (1,3) (99,) ', 'occurred at index mileage')

как я могу добавить 'linalg'столбец с каждым вычисленным значением?

Пример ввода: param_array

[[1.16603492 0.56862718 0.53061338]]

df

index a  b  c
62    0.398031    -0.711471        0.568627
63    0.416261    -0.508861        0.868064
64    0.934160    -0.885950        0.868064
65    0.416261    -0.778950        0.568627
66    0.416261    -0.973966        0.269191
67   -0.490270     0.573738       -0.629119
68    1.152092    -0.943765        0.868064
69    0.445264    -0.704395        0.568627

Желаемый результат:

index a  b  c linalg
    62    0.398031    -0.711471        0.568627        "results of np.linalg.norm(param_array - 'array of a/b/c')"
    63    0.416261    -0.508861        0.868064        "results of np.linalg.norm(param_array - 'array of a/b/c')"

1 Ответ

0 голосов
/ 30 сентября 2019

Это должно работать:

import numpy as np
import pandas as pd

df = pd.DataFrame({
    'a': [1, 0.1, 0.01],
    'b': [2, 0.2, 0.02],
    'c': [3, 0.3, 0.03],
    'd': ['a', 'b', 'c']
})

param_array = np.array([1, 2, 3])

df = df.assign(
    linalg=df[['a', 'b', 'c']].apply(lambda x: np.linalg.norm(param_array - x.values), axis=1)
)

print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...