Dataframe 将长度不匹配的列添加到julia中的数据帧

Dataframe 将长度不匹配的列添加到julia中的数据帧,dataframe,julia,Dataframe,Julia,我试图将长度(行数)不匹配的列添加到数据帧中,它会抛出一个错误 维度不匹配(“新列目标的长度为60000,必须与数据框中的行数(47040000)匹配”) 我的代码片段是 df = DataFrame(:Feature => train_x, :Target => train_y) #train_x has 47040000 rows #train_y has 60000 rows 请为这个问题提出解决方案。 提前谢谢。你确定这就是你想要做的吗?通常情况下,当目标列中有行时,可能

我试图将长度(行数)不匹配的列添加到数据帧中,它会抛出一个错误

维度不匹配(“新列目标的长度为60000,必须与数据框中的行数(47040000)匹配”)

我的代码片段是

df = DataFrame(:Feature => train_x, :Target => train_y)

#train_x has 47040000 rows
#train_y has 60000 rows
请为这个问题提出解决方案。
提前谢谢。

你确定这就是你想要做的吗?通常情况下,当目标列中有行时,可能会有很多行特性,因此此错误可能指向代码中的概念问题

如果你一定要这么做,我有两个选择:

  • 缺失
    或您选择的某个值填充较短的向量,因此
    :Target=>[train_y;[train_x的缺失长度(train_x)-length(train_y)]
    。我在向量末尾填充,这在您的情况下可能合适,也可能不合适
  • 使用
    train_x
    列将数据帧的
    leftjoin
    连接到带有
    train_y
    列的数据帧上-为此,两个数据帧中都需要一个ibex列来描述y行与x的匹配方式。如果只添加一个运行索引
    1:length(train_*)
    对于两个数据帧,结果将与用
    缺失的
    填充
    序列的结尾相同

由于数据帧实际上是一组列,因此这是可能的:

df = DataFrame(x=Int[],y=Int[])
append!(df.x,[1,2])
append!(df.y,[1,2,3])
但是,由于这种数据帧没有意义,您将无法通过标准的
数据帧
API使用它(它将被视为损坏的
数据帧
):

julia> df[1,:]
DataFrameRowError showing value of type DataFrameRow{DataFrame,DataFrames.Index}:
ERROR: AssertionError: Data frame is corrupt: length of column :y (3) does not match length of column 1 (2). The column vector has likely been resized unintentionally (either directly or because it is shared with another data frame).