【问题标题】:error using boolean indexing with pandas使用带有熊猫的布尔索引时出错
【发布时间】:2014-11-05 10:53:24
【问题描述】:

我有一个专栏"APNT_NA_ACTN",提供了用于雇用员工的编码类型:

115, 515, 100, 786, 101, etc...

我已将我的数据集别名为名称,因此names[:3] 提供了整个数据集的三行。

我有能力过滤一种类型的代码:

names[names['APNT_NA_ACTN'] == 115]
names

但是,我只想过滤:此列中的 115 和 515。我已经尝试了以下

temp = names[(names['APNT_NA_ACTN'] == 115) & (names['APNT_NA_ACTN'] == 515)]
temp

我也试过了:

temp = names.query('[100,515] in 'APNT_NA_ACTN')

谁能提供帮助?

谢谢

所以下面的所有建议都对我有用:

1) temp = 名称[名称['APNT_NA_ACTN'].isin([115,515])]

2) 招聘代码 = 名称['APNT_NA_ACTN'] 临时=名称[(招聘代码== 115)| (招聘代码 == 515)] temp[['NM_EMP_LST','NAT_ACTN_2_3','ACTN_YMD','ORG_LEV2','ORG_LEV3','APNT_NA_ACTN','APNT_YMD','SCD_LV_YMD','SSNO','年份']]

【问题讨论】:

  • 另一种选择是names['APNT_NA_ACTN'].isin([115,515)]
  • 我喜欢这个概念,但是我收到错误消息:isin() 只需要 2 个参数(给定 3 个) 我输入了这样的代码:names['APNT_NA_ACTN'].isin([115,515)]名字
  • 抱歉拼写错误,试试这个:names['APNT_NA_ACTN'].isin([115,515])]
  • 是的,这完全有效......

标签: python pandas indexing boolean


【解决方案1】:

另一种方法是使用isin:

names['APNT_NA_ACTN'].isin([115,515])]

您可以将列表或系列传递给方法

【讨论】:

    【解决方案2】:

    使用|(逻辑或)代替&(逻辑与):

    hiring_code = names['APNT_NA_ACTN']
    temp = names[(hiring_code == 115) | (hiring_code == 515)]
    

    【讨论】:

    • 这似乎提供了我需要的东西。非常感谢所有输入!
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2018-01-13
    • 2019-08-06
    • 2021-03-19
    • 2017-08-25
    • 2018-04-18
    相关资源
    最近更新 更多