Как заменить set_value на at [] в серии "Панды" - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать серию панд для конкатенации на фрейм данных.

import numpy as np
import pandas as pd

rawData = pd.read_csv(input, header=1) # the DataFrame

strikes = pd.Series()     # the empty Series
for i, row in rawData.iterrows():
    sym = rawData.loc[i,'Symbol']
    strike = float(sym[-6:])/1000
    strikes = strikes.set_value(i, strike)
print("at26: ",strikes.values)

Эта программа работает, но я получаю сообщение об ошибке:

"строка 25: FutureWarning:set_value устарела и будет удалена в следующем выпуске. Вместо этого используйте методы доступа .at [] или .iat []. "

Каждый раз, когда я пытался заменить .at, я получаю синтаксическую ошибку.Многие из опубликованных предложений относятся к DataFrames, а не к Series.Добавить требует другой серии, и жалуется, когда я даю ему скаляр.

Как правильно это сделать?

1 Ответ

0 голосов
/ 12 октября 2018

Замените strikes.set_value(i, strike) на strikes.at[i] = strike.

Обратите внимание, что присвоение назад серии не обязательно с set_value:

s = pd.Series()

s.set_value(0, 10)
s.at[1] = 20

print(s)

0    10
1    20
dtype: int64

Для алгоритма, который вы хотите запустить, вы можете просто использовать присваивание:

strikes = rawData['Symbol'].str[-6:].astype(float) / 1000
...