为了账号安全,请及时绑定邮箱和手机立即绑定

Dask 将 2 个数据帧连接成 1 个数据帧

Dask 将 2 个数据帧连接成 1 个数据帧

慕尼黑的夜晚无繁华 2024-01-15 21:13:25
客观的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")



查看完整回答
反对 回复 2024-01-15
  • 1 回答
  • 0 关注
  • 32 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信