我想选择一个满足多行多个条件的数据框的子集。我知道我可以按顺序执行此操作-首先选择与第一个条件匹配的子集,然后选择与第二个条件匹配的子集,依此类推,但是似乎应该可以在一个步骤中完成。以下内容似乎应该起作用,但不起作用。显然,在其他语言的DataFrame实现中,它确实可以像这样工作。有什么想法吗?
using DataFrames
df = DataFrame()
df[:A]=[ 1, 3, 4, 7, 9]
df[:B]=[ "a", "c", "c", "D", "c"]
df[(df[:A].<5)&&(df[:B].=="c"),:]
type: non-boolean (DataArray{Bool,1}) used in boolean context
while loading In[18], in expression starting on line 5
最佳答案
这是Julia的事情,而不是DataFrame的事情:您需要&
而不是&&
。例如:
julia> [true, true] && [false, true]
ERROR: TypeError: non-boolean (Array{Bool,1}) used in boolean context
julia> [true, true] & [false, true]
2-element Array{Bool,1}:
false
true
julia> df[(df[:A].<5)&(df[:B].=="c"),:]
2x2 DataFrames.DataFrame
| Row | A | B |
|-----|---|-----|
| 1 | 3 | "c" |
| 2 | 4 | "c" |
FWIW,这在Python中的 Pandas 中以相同的方式工作:
>>> df[(df.A < 5) & (df.B == "c")]
A B
1 3 c
2 4 c
关于dataframe - 使用多种条件选择数据框行的子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29421092/