【发布时间】:2015-05-17 23:38:57
【问题描述】:
假设您有以下使用代码构建的数据框:
import numpy as np
from pandas import *
headers = ['name', 'rating']
data = (['John', .987], ['Joe', .543], ['Mary', .294], ['Bill', .784])
df = Dataframe(data, columns = headers)
我知道我可以进行数据框选择,例如 df.name 或 df[['rating']] 一次访问一列,或 df[2:3] 进行行切片,但我似乎无法将两者结合起来。如果我想要所有评级高于 0.500 的行怎么办?这似乎不起作用:
df[df.rating > .5]
或
df.where(df.rating > .5)
第一个可以在 R 中使用。在文档 The where() Method and Masking () 中,示例是:
s.where(s > 0)
然而,这是非常有限的,因为我们很少希望根据所有列和所有行选择一个新对象(事实上,我从来没有这个需要)。我知道 Python 中的数据帧不等于 R 中的数据帧,但仍然需要。
- 如何选择满足特定数字标准的行?相等的
到
df[df.rating > .5] - 如何根据列表选择行?相当于
df[df.name in ('John', 'Joe')]' - 我可以对列过滤器和行过滤器进行切片吗?相当于
df[df.rating > .5, df.name in ('John', 'Joe')]
我觉得高级切片缺乏帮助,而 R 在 Subsetting 方面更胜一筹
【问题讨论】:
-
谢谢 - 我意识到我做错了什么。在我的示例中,我的演示数据很好,但在我的应用程序中,所有值都是 str 而不是 int,并且不允许我按照我的意愿进行切片。愚蠢的我 - 谢谢!
标签: python r numpy pandas dataframe