代码之家  ›  专栏  ›  技术社区  ›  user1067305

如何在一个系列中用at[]替换set_值

  •  1
  • user1067305  · 技术社区  · 8 年前

    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行:未来警告:set\u值已弃用,将在将来的版本中删除。请改用.at[]或.iat[]访问器。“

    我试过的每一种替代方法。在,我得到一个语法错误。发布的许多建议都与数据帧有关,而不是序列。Append需要另一个序列,当我给它一个标量时它会抱怨。

    1 回复  |  直到 8 年前
        1
  •  5
  •   jpp    8 年前

    替换 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
    
    推荐文章