【问题标题】:Select range of columns by condition in Pandas在 Pandas 中按条件选择列范围
【发布时间】:2020-06-05 15:05:50
【问题描述】:

我想做这样的事情。选择一个或 n 列范围和另一列

df_premises = df.iloc[:, 0:8 and 11] 等同于df_premises = df.iloc[:, [0,1,2,3,,8,11]]

我试过了;

  1. df_premises = df.iloc[:, 0:8, 11] - 导致错误
  2. df_premises = df.iloc[:, 0:8 + 11] - 返回 0:18

【问题讨论】:

标签: python python-3.x pandas


【解决方案1】:

您可以使用:df.iloc[:, lambda x: x.index < 9 or x.index == 11]

更简单的解决方案是在此之前定义一个列表,并使用iloc 中的列表。

例如:

my_range = range(9)
my_range.append(11)
df_premises = df.iloc[:, my_range]

pandas documentation 中所述,输入必须是以下之一:

  1. 一个整数,例如5.

  2. 整数列表或数组,例如[4, 3, 0]。

  3. 带有整数的切片对象,例如1:7。

  4. 一个布尔数组。

  5. 具有一个参数(调用 Series 或 DataFrame)并返回有效输出以进行索引的可调用函数

您可以使用像df.iloc[:3] 这样的简单切片或像df.iloc[lambda x: x.index % 2 == 0] 这样的函数。

针对您所询问的内容,以下内容将起作用:

df.iloc[:, lambda x: x.index < 9 or x.index == 11]

【讨论】:

  • 谢谢 这和stackoverflow.com/questions/41256648/…一样吗?
  • 相同但不同的方式。两者都有效,请根据您的意见使用更简单的方法。对于你的情况,我喜欢更直接地使用 lambda
猜你喜欢
  • 2017-05-06
  • 2019-10-09
  • 2017-08-30
  • 2018-09-27
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多