Ошибка операции на уровне строки данных при добавлении нового вычисленного значения - PullRequest
1 голос
/ 06 апреля 2020

У меня есть кадр данных типа enter image description here в CSV.

Я хочу получить enter image description here

Я получил ошибку :

 91             return converter(self.iloc[0])
     92         raise TypeError("cannot convert the series to "
---> 93                         "{0}".format(str(converter)))
     94 
     95     wrapper.__name__ = "__{name}__".format(name=converter.__name__)

Ошибка типа: невозможно преобразовать серию в

Ниже приведен мой код

import pandas as pd 
data = pd.read_csv("test.csv")
a=data['a']
b=data['b']
value=sqrt(a**2+b**2)

data['value']=value

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Метод 1

Один из способов - использовать понимание списка:

value=[math.sqrt(x**2+y**2) for x,y in zip(a,b)]

Пример полного кода:

import pandas as pd 
import math

data = pd.read_csv("test.csv")
a=data['a']
b=data['b']
value=[math.sqrt(x**2+y**2) for x,y in zip(a,b)] 

data['value']=value

Метод 2

Или используйте numpy здесь для выполнения поэлементной операции.

import numpy as np
...
np.sqrt(..)

Таким образом, этот код работает, как и ожидалось

import pandas as pd 
import numpy as np

data = pd.read_csv("test.csv")
a=data['a']
b=data['b']
value=np.sqrt(a**2+b**2)

data['value']=value

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

0 голосов
/ 06 апреля 2020

Поскольку sqrt не является встроенной функцией, такой как sum() в python, вам необходимо использовать пакеты, такие как Numpy или Math, для вызова функции sqrt.

import numpy as np
np.sqrt(a**2+b**2)

или

import math
math.sqrt(a**2+b**2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...