【问题标题】:Python Pandas indexingPython Pandas 索引
【发布时间】:2013-10-30 16:48:44
【问题描述】:

对不起,如果这是一个简单的问题,我试图寻找解决方案,但找不到任何东西。

我的代码是这样的:

  • 给定 zip1,创建一个索引以选择尚未完成某些计算的观测值(其他邮政编码)(666)

    I = (df['zip1'] == zip1) & (df['Distances'] == 666)
    
  • 进行一些计算

    distances = calc(zip1,df['zip2'][I])
    

到目前为止一切顺利,我检查了距离变量、正确的值、正确大小的数组。

  • 将距离变量放在正确的位置

    df['Distances'][I] = distances
    

但最后一部分将所有df['Distances'] 变量更新为无意义的值,以使用df['zip1']=zip1 而不是I 选择的所有观察值。

我在df['Distances'][I] = distances 命令之前检查了布尔数组I,它看起来很好。任何想法将不胜感激。

【问题讨论】:

  • 您需要使用.loc.ix 而不是链式赋值参见thisrelated 所以正确的用法是df.loc[l,'Distances']=distances
  • 你有工作示例来测试吗?
  • EdChum 的建议奏效了。有道理,以前从来不知道这个视图和复制的东西。谢谢。

标签: python indexing pandas


【解决方案1】:

您正在尝试的操作称为链式分配,它不会按照您的想法工作,因为它返回的是副本而不是视图,因此您会看到错误。

有更多关于它的信息here和相关的issuesthisthis

所以你应该像这样使用.loc.ix

df.loc[I,'Distances']=distances

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2021-07-14
    • 2021-10-18
    • 2020-08-11
    • 2015-03-16
    • 2013-08-12
    • 2019-05-04
    • 2017-11-20
    • 1970-01-01
    相关资源
    最近更新 更多