【问题标题】:Multi condition filtering in pandas dataframe [duplicate]熊猫数据框中的多条件过滤[重复]
【发布时间】:2019-08-02 19:01:11
【问题描述】:

我的数据框无法显示在世界各地都有经度和纬度点的整个数据(机密),但我只需要过滤一个国家/地区

假设这是数据

现在我必须过滤具有坐标范围的特定国家/地区的行数据

`latitude` :  8°4′ N to 37°6′ N
`longitude` : 68°7′ E to 97°25′ E

所以我尝试了这个

df_filtered = df[38 > df['LATITUDE'] > 8 and 98 > df['LATITUDE'] > 68]  

但这给出了这个奇怪的错误

ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

【问题讨论】:

  • df[df.a.between(8,38) & df.a.between(68,98)]
  • 虽然这是正确的@WeNYoBen,因为 OP 要求这样做,但 | 运算符会更有意义
  • 别担心,谢谢分享重复的帖子链接df_filtered = df.loc[(df['LATITUDE'] >=8) & (df['LATITUDE'] <=38) & (df['LONGITUDE'] >=68) & (df['LONGITUDE'] <=98)]这工作
  • @Saurabh 你的逻辑没有意义:df_filtered = df.loc[((df['LATITUDE'] >=8) & (df['LATITUDE'] <=38)) | ((df['LONGITUDE'] >=68) & (df['LONGITUDE'] <=98)) 这更有意义

标签: python python-3.x pandas data-science


【解决方案1】:

之间使用

df_filtered = df[(df['LATITUDE'].between(8,38) ) &  (df['LONGITUDE'].between(68,98))]  

【讨论】:

  • 这是错误的,你检查了吗?
  • 是的,这是同样的错误
  • @Saurabh 它应该可以工作
  • @Erfan 是的,我已经检查过了
猜你喜欢
  • 2017-11-20
  • 2021-09-04
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 1970-01-01
  • 2021-04-05
相关资源
最近更新 更多