python - 有条件地选择数据框行的一部分

标签 python pandas

我有一个看起来像这样的数据框:

In [75]:

x.head()
Out[75]:
         start    end   phone
  0      0       1600    /
  1      1600    1660    p
  2      1660    1720    e
  3      1720    1780    n
  4      1780    1850    e

我有开始编号和结束编号,我想选择这些编号之间的所有行。 例如,对于 start=0 和 end=1720,我将获得前三行。

我尝试了天真的方式:

x[x.start==0:x.end==1720]

当然那是行不通的。繁琐的方法确实奏效了:

s = x[x.start==0].index
e = x[x.end==1720].index
x[s:e]

有没有更优雅的方式来做到这一点?在我看来, Pandas 的问题是我猜不出那些优雅的方式。您只需要成为专业人士才能做事,否则代码必须很丑陋。

最佳答案

假设

some_start = 0
some_end = 1720

然后

x[(x.start >= some_start) & (x.end <= some_end)]

请注意,您找到满足 start 值的索引,然后找到满足 end 值的索引的方法有一些缺点。它要求数据按两列并以正确的顺序排序。这也意味着不能有重复项,否则 x.start==0 为 True 的位置的 .index 可能不是单个标量值(value)。

关于python - 有条件地选择数据框行的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275808/

相关文章:

python - 查明列表中是否没有项是字典中的键

python - 基本美汤 helper - 格拉斯顿伯里阵容

python - 对行进行分组并定义列聚合规则

python - 如何将 Dataframe 时间增加 5 分钟间隔?

python - R-Python : Getting Monthly, 每周索引点

python - 如何使用 Google App Engine 重定向并显示错误

python - docker.errors.DockerException : Error while fetching server API version

python - 如何在 Pandas Dataframe 中查找特定值

python - 从数据框中列表内的字典中提取元素

python - 为 onehotencoded 变量创建管道不起作用