Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia DataFrame错误:BoundersError尝试访问尝试访问索引处有X行的数据帧false_Julia - Fatal编程技术网

Julia DataFrame错误:BoundersError尝试访问尝试访问索引处有X行的数据帧false

Julia DataFrame错误:BoundersError尝试访问尝试访问索引处有X行的数据帧false,julia,Julia,我试图在Julia中对数据帧进行子集划分,如下所示: df = DataFrame(a=[1,2,3], b=["x", "y", "z"]) df2 = df[df.a == 2, :] df = DataFrame(a=[1,2,3], b=["x", "y", "z"]) df2 = df[df.a .== 2, :] 我希望只返回第二行,但是我得到了一个错误: 错误:边界错误:尝试访问“尝试访问数据帧” 索引处有3行“false” 这个错误是什么意思?如何对数据帧进行子集划分?幸运的

我试图在Julia中对数据帧进行子集划分,如下所示:

df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
df2 = df[df.a == 2, :]
df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
df2 = df[df.a .== 2, :]
我希望只返回第二行,但是我得到了一个错误:

错误:边界错误:尝试访问“尝试访问数据帧” 索引处有3行“false”


这个错误是什么意思?如何对数据帧进行子集划分?

幸运的是,您只需要添加一个字符:
字符可以在任何Julia函数上进行广播,即使是像
=
这样的函数。因此,您的代码如下所示:

df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
df2 = df[df.a == 2, :]
df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
df2 = df[df.a .== 2, :]
在没有广播的情况下,子句
df.a==2
返回
false
,因为它实际上是将数组[1,2,3]作为一个整体单位与标量值2进行比较。形状(3,)的数组在不广播的情况下永远不会等于标量值2,因为大小不同。因此,该子句只返回一个
false

您收到的错误告诉您正在尝试访问索引为false的数据帧,该索引不是包含3行的数据帧的有效索引。通过使用
进行广播,您现在创建了一个shape(3,)的Bool数组,这是一种为包含3行的数据帧编制索引的有效方法


有关广播的更多信息,请参阅Julia官方文档。

仅提及其他选项请注意,您可以在此处使用
过滤器
功能:

julia> filter(row -> row.a == 2, df)
1×2 DataFrame
│ Row │ a     │ b      │
│     │ Int64 │ String │
├─────┼───────┼────────┤
│ 1   │ 2     │ y      │


为什么你总是问自己的问题,回答自己的问题?让别人更容易用谷歌搜索常见错误,更快地找到答案。我的理解是,这是受到鼓励的。