客觀的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
提交
取消