当前位置: 首页 > 知识库问答 >
问题:

使用.loc()时出错[重复]

红鸿运
2023-03-14

我有一个熊猫数据框公文包,它的键是日期。我正在尝试通过访问多行

打印(portfolio.loc['2007-02-26','2008-02-06',:])

但是我犯了一个错误

KeyError:"[index(['2007-02-26','2008-02-06'], dtype='ject', name='Date')]都不在[index]中"

但是,print(portfolio.loc['2007-02-26',:])成功返回

holdings      1094.6124
pos_diff       100.0000
cash         98905.3876
total       100000.0000
returns          0.0000
Name: 2007-02-26 00:00:00, dtype: float64

这不是一个有效的格式吗-


共有1个答案

谢学名
2023-03-14

问题似乎在于从字符串到时间戳的类型转换。因此,解决方案是在将标签集传递给loc之前,将其显式转换为DateTime:

df = pd.DataFrame({"a" : range(5)}, index = pd.date_range("2020-01-01", freq="1D", periods=5))
print(df) 

==> 
            a
2020-01-01  0
2020-01-02  1
2020-01-03  2
2020-01-04  3
2020-01-05  4

try:
    df.loc[["2020-01-01", "2020-01-02"], :]    
except Exception as e:
    print (e) 

 ==>
"None of [Index(['2020-01-01', '2020-01-02'], dtype='object')] are in the [index]"

# But - if you convert the labels to datetime before calling loc, 
# it works fine. 
df.loc[pd.to_datetime(["2020-01-01", "2020-01-02"]), :]

===>
            a
2020-01-01  0
2020-01-02  1
 类似资料:
  • 当我试图执行这条语句时,出现了错误。我创建了一个包含表名的数组mem[],每个表中有两列,分别是amt(float(9,2))和comb(varchar(5))。 我在for循环中使用了这个语句: 错误: 通用域名格式。mysql。jdbc。例外情况。jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第1行“akhi

  • 我需要一个线程等待一段时间,然后在TextView中更改文本。我的搜索找到了如何使用runOnUiThread 提前感谢您的帮助。

  • 我得到的错误的情况下,我不会期望他们: 和 为什么会发生在案例1和2中?

  • 这些是我在build.gradle中的依赖项 } 如果我重建项目,我得到这个错误。 到底是什么问题?我想使用appcompat-v7,因为我实现了导航抽屉。 我能做什么来解决这个问题。 编辑: 我编辑我的gradle如下: 但是我得到了一些其他的错误: 这是我完整的gradle文件:

  • 对使用. locs进行索引/切片的赋值有一个一般性问题。 假设以下数据帧df: 要复制的代码: 我创建df1使用: 然后,我根据B中的值,使用以下公式为C赋值: 作业正常工作,但我收到一个SettingBackCopy警告。是我做错了什么,还是这是预期的功能?我认为使用. loc可以避免链式赋值。是不是我错过了什么?我正在使用熊猫14.1

  • 问题内容: 我的代码- 错误- > 警告:mysql_real_escape_string()[function.mysql-real-escape-string]:在C:\ xampp \ htdocs \ shizin \ admin \中拒绝访问用户’ODBC’@’localhost’(使用密码:NO)第48行的newArticle.php 警告:mysql_real_escape_stri