【问题标题】:ValueError: Can only compare identically-labeled Series objectsValueError:只能比较标签相同的系列对象
【发布时间】:2018-01-25 06:16:15
【问题描述】:

这是我的代码,无论我做什么,我都会不断收到错误并遵循所有与索引相关的解决方案,有人可以帮助我吗?

site = pd.read_csv('../data/survey_site.csv')
sampled = site.sample(n=1)

site = site.reset_index(drop=True)
sampled = sampled.reset_index(drop=True)

mask = site.mask(site['name'] == sampled['name'])

【问题讨论】:

  • 试试mask = site.mask(site['name'] == sampled['name'].squeeze())
  • Aaaaaa 并且它有效......如果您能提供任何有关问题出现原因的线索,我会非常高兴,但似乎与 sample 返回的内容有关。非常非常感谢你。另外我不知道如何给你的答案加分,因为这是我第一次提出问题,如果你能告诉我怎么做,我将不胜感激
  • 示例返回一个数据框。然后 sample['name'] 是一个系列。挤压是将其转换为标量的简单方法。
  • 站点['name'] 和 sampled['name'] 不一样吗,因为两者都是数据帧并且都在请求列?
  • Omg piRSquared 你已经回答了涉及我在旧线程中的精确问题的问题,非常感谢,这正是我需要做的:stackoverflow.com/questions/39835021/…

标签: python pandas dataframe mask data-analysis


【解决方案1】:

问题是site['name']sample['name'] 之间的比较是在两个pd.Series 之间。您可以通过将其中一个设为标量来绕过它。但是,我注意到您使用了长度为1sample。我怀疑您认为当您使用sample['name'] 时,它会是一个标量值。但相反,它是一个长度的系列。所以你只需要 make 是一个标量。

选项 1

mask = site.mask(site['name'] == sampled['name'].squeeze())

选项 2

mask = site.mask(site['name'] == sampled.loc[0, 'name'])

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2018-12-06
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多