由于 Python3,pandas 中的 set_values 和 at() 没有属性“set_values”或“At_indexer”错误

时间:2021-07-07 06:50:32

标签: python-3.x pandas numpy series

我是熊猫的新手,仍在学习。 我正在尝试按标签顺序添加两个数字。一种方法是这样的:

function myFunction() 
{
  var x = document.getElementsByTagName("iframe")[0].getAttribute("src"); 
  document.getElementById("demo").innerHTML = x;
}

输出:

<块引用>

AttributeError: 'Series' 对象没有属性 'set_values'

现在经过研究,我发现它已被弃用,而改为使用 at()。 所以当我像这样使用它时:

    numbers = pd.Series(np.random.randint(0,1000,10000))
    for label, value in numbers.iteritems():
        numbers.set_values(label, value+2)
    numbers.head()

输出:

<块引用>

TypeError: '_AtIndexer' 对象不可调用

所以当我像这样使用 at[] 时:

for label, value in numbers.iteritems():
    numbers.at(label, value+2)
numbers.head()

我得到这个输出:

for label, value in numbers.iteritems():
    numbers.at[label, value+2]
numbers.head()

我做错了什么,可以修复什么?

1 个答案:

答案 0 :(得分:0)

at 用作对其参数给出的索引的访问器。当您将 label, value+2 传递给它时,它会将这个参数视为一个 2 元组,并在第一轮中查找字面上名为 (0, 10002) 的索引,但由于您的系列具有整数索引 0, 1, ... , 不是元组。

因此您可以只将 label 留在 at 中并设置它返回到 value + 2 的内容:

numbers = pd.Series(np.random.randint(0,1000,10000))

for label, value in numbers.iteritems():
    # lookup the value and set it
    numbers.at[label] = value + 2

(注意这等价于 numbers += 2)。

相关问题