我有一个在 Azure 数据块中运行的考拉数据框,可以说:
import databricks.koalas as pd
df = pd.DataFrame({'category': ['A', 'A', 'B'],
'col1': [1, 2, 3],
'col2': [4, 5, 6]},
columns=['category', 'col1', 'col2'])
我想创建一个新列(当前在函数中),它根据列的值(有限且已知)评估列,并用来自另一个数据集列的元素填充新列。(为什么?,因为第二个数据集包含要包含的参数,并且在用于此数据提取之前已被过滤)
我已经尝试过(来自调用 df 和 params 的函数中的代码)
return df.assign(col3= df.category.map({
'A': params['column1'] ,
'B' : params['column2'] ,
'C': params['column3']
#}) )
带有错误消息:
PandasNotImplementedError: The method `pd.Index.__iter__()` is not implemented. If you want to collect your data as an NumPy array, use 'to_numpy()' instead.
这很奇怪,因为我在任何地方都没有给熊猫打电话
我也试过:
df = df.assign(col3 = None)
return df.col3.mask(df.category== 'A', params['column1']) \
.mask(df.category == 'B' , params['column2'])\
.mask(df.category == 'C', params['column3'])
在第二种情况下,返回的数据帧具有所有 nan 值。
我也已经将 'compute.ops_on_diff_frames' 设置为True