簡體   English   中英

將值應用於 Dask dataframe 映射與 function

[英]Apply values to Dask dataframe mapping with function

在下面的 Dask 代碼中,我試圖根據 function、 apply_masks中的邏輯設置 dataframe 字段的值:

import numpy as np
import pandas as pd
import dask.dataframe as daskDataFrame

def apply_masks(df):
   if df['Age'] > 14:
       df['outcol'] = 6
   else:
       df['outcol'] = 5
   return df

data = [[1,100, 12, 6], [1,200, 18, 5], [1,170, 22, 4]]
df = pd.DataFrame(data, columns = ['outcol', 'Weight', 'Age', 'Height']) 
ddf = daskDataFrame.from_pandas(df, npartitions=100)
ddf = ddf.map_partitions(apply_masks)
print(ddf.compute())

問題是得到一個例外:

ValueError:元數據推斷在apply_masks中失敗。

您提供了自定義 function 並且 Dask 無法確定 function 返回的 output 的類型。

要解決此問題,請提供 meta= 關鍵字。 您運行的 Dask function 的文檔字符串應該有更多信息。

原始錯誤如下: ------------ ValueError('一個Series的真值不明確。使用a.empty, a.bool( )、a.item()、a.any() 或 a.all()。')

如何解決這個問題?

嘗試assign + np.where

def apply_masks(df):
    return df.assign(outcol=np.where(df['Age'] > 14, 6, 5))

結果:

   outcol  Weight  Age  Height
0       5     100   12       6
1       6     200   18       5
2       6     170   22       4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM