首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“pandas.core.indexing._AtIndexer”类中遇到麻烦

在“pandas.core.indexing._AtIndexer”类中遇到麻烦
EN

Stack Overflow用户
提问于 2021-04-06 15:22:46
回答 1查看 196关注 0票数 2

我正在做一个ML项目,根据标签预测堆栈溢出时的回答时间。样本数据:

代码语言:javascript
复制
Unnamed: 0  qid i   qs  qt  tags    qvc qac aid j   as  at
0   1   563355  62701.0 0   1235000081  php,error,gd,image-processing   220 2   563372  67183.0 2   1235000501
1   2   563355  62701.0 0   1235000081  php,error,gd,image-processing   220 2   563374  66554.0 0   1235000551
2   3   563356  15842.0 10  1235000140  lisp,scheme,subjective,clojure  1047    16  563358  15842.0 3   1235000177
3   4   563356  15842.0 10  1235000140  lisp,scheme,subjective,clojure  1047    16  563413  893.0   18  1235001545
4   5   563356  15842.0 10  1235000140  lisp,scheme,subjective,clojure  1047    16  563454  11649.0 4   1235002457

我被数据清理程序卡住了。我打算创建一个名为“time_taken”的新列,它存储at列和qt列之间的差异。代码:

代码语言:javascript
复制
import pandas as pd
import numpy as np
df = pd.read_csv("answers.csv")
df['time_taken'] = 0
print(type(df.time_taken))
for i in range(0,263541):
    val = df.qt[i]
    qtval = val.item()
    val = df.at[i]
    atval = val.item()
    df.time_taken[i] = qtval - atval

我得到了一个错误:

代码语言:javascript
复制
Traceback (most recent call last):

  File "<ipython-input-39-9384be9e5531>", line 1, in <module>
    val = df.at[0]

  File "D:\Softwares\Anaconda\lib\site-packages\pandas\core\indexing.py", line 2080, in __getitem__
    return super().__getitem__(key)

  File "D:\Softwares\Anaconda\lib\site-packages\pandas\core\indexing.py", line 2027, in __getitem__
    return self.obj._get_value(*key, takeable=self._takeable)

TypeError: _get_value() missing 1 required positional argument: 'col'

这里的问题在于 df.at 类型的索引,df.qt和df.at都是

代码语言:javascript
复制
<class 'pandas.core.indexing._AtIndexer'> 
<class 'pandas.core.series.Series'> respectively.

我是一个数据科学的绝对初学者,没有足够的经验,熊猫和矮胖。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-06 15:44:27

平心而论,有一种更简单的方法可以做到这一点。

代码语言:javascript
复制
df['time_taken'] = df['at'] - df.qt

AtIndexer的问题之所以出现,是因为.at是熊猫的一种方法。为此,您需要确保不给列命名任何与Python/Pandas方法相同的名称。您可以通过使用df['at']而不是df.at进行索引来解决这个问题。

除此之外,这个操作--如果我理解的话--可以用一个短行和一个长的for循环来完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66971584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档