如何在pandas Series中使用at[]替换set_value?

4

我正在尝试构建一个pandas系列,以连接到数据框中。

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)

这个程序是可行的,但是我收到了以下错误信息:
“line 25: FutureWarning: set_value is deprecated and will be removed in a future release. Please use .at[] or .iat[] accessors instead.”
我尝试了多种方法来替换为at,但我一直得到语法错误。许多建议都与DataFrames有关,而不是Series。Append需要另一个series,并且当我给它一个标量时会抱怨。
正确的做法是什么?
1个回答

6

请将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

1
两点都对!谢谢。 - user1067305

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接