客观的df_labelled将文件与部分标记点合并到df包含所有点的位置。我尝试过的参考Simple way to Dask concatenate (horizontal, axis=1, columns),我尝试了下面的代码df = df.repartition(npartitions=200)df = df.reset_index(drop=True)df_labelled = df_labelled.repartition(npartitions=200)df_labelled = df_labelled.reset_index(drop=True)df = df.assign(label = df_labelled.label)df.head()但我得到了错误ValueError:并非所有分区都是已知的,无法对齐分区。请使用set_index设置索引。我尝试过的另一件事是对表进行左连接,但所有标签都为 NaN,你能解释一下我做错了什么吗?result = dd.merge(df, df_labelled, on=['x', 'y', 'z','R', 'G', 'B'], how="left")result.head() x y z R G B label0 39020.470000 33884.200003 36.445701 25 39 26 NaN1 39132.740002 33896.049994 30.405700 19 24 18 NaN2 39221.059994 33787.050001 26.605700 115 145 145 NaN无论如何我可以达到如下预期的结果吗?我无法在 Pandas 中运行,因为有很多点会导致 Pandas 内存问题。数据df(该文件包含所有点) x y z R G B0 39047.700012 33861.890015 48.115704 7 18 12 1 39044.110016 33860.150024 47.135700 14 28 152 39049.280029 33861.950073 49.405701 30 58 333 39029.030000 33937.689993 48.425700 152 154 1434 39066.980000 33937.870001 49.725699 209 218 2255 39069.810002 33795.460001 42.405699 113 136 154df_labelled(该文件包含一部分标记点) x y z R G B label0 39047.700012 33861.890015 48.115704 7 18 12 141 39044.110016 33860.150024 47.135700 14 28 15 142 39049.280029 33861.950073 49.405701 30 58 33 14预期结果 x y z R G B label0 39047.700012 33861.890015 48.115704 7 18 12 141 39044.110016 33860.150024 47.135700 14 28 15 142 39049.280029 33861.950073 49.405701 30 58 33 143 39029.030000 33937.689993 48.425700 152 154 143 nan4 39066.980000 33937.870001 49.725699 209 218 225 nan5 39069.810002 33795.460001 42.405699 113 136 154 nan
1 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
我认为当你做这样的事情时会出现错误:
df = df.assign(label = df_labelled.label)
因为数据帧 df 或/和 df_labelled 中没有索引。而且 Dask 不像 Pandas 那样支持多个索引。如果您有多个键来合并 Dask 中的数据帧,请定义左键和右键,而不是使用索引。这对我有用:
result = dd.merge(df, df_labelled, left_on=['x', 'y', 'z','R', 'G', 'B'], right_on = ['x', 'y', 'z','R', 'G', 'B'], suffixes=['_1', '_2'], how="left")
添加回答
举报
0/150
提交
取消