如果数据框为空,则熊猫应用函数(UDF)无法返回多个值

时间:2020-11-04 09:54:27

标签: python pandas apply user-defined-functions

我希望能够从熊猫UDF(应用函数)返回多个列。只要数据框不为空,这将很好地工作! 如果为空,它将失败并显示:/target。这是否被视为熊猫中的虫子?还是应该在执行功能之前强迫用户手动检查已过滤数据帧的长度?还是有更好的方法避免遇到此问题?

not enough values to unpack (expected 3, got 0)

1 个答案:

答案 0 :(得分:0)

一种解决方案是将pd.concatresult_type='expand'结合使用。

cols = {0: 'r1', 1: 'r2', 2: 'r3'}
df = pd.concat([df, df.apply(my_function, axis=1, result_type='expand')], axis=1).rename(columns=cols)

此后,您必须重命名列。另外,结果为空的数据框将重复前两列:

输出:

    foo bar foo bar

    foo bar

两个数据框都是空的,因此对您而言可能没有兴趣。


我认为检查熊猫中的空数据框是一种好习惯。因此,评论中的Siddhants解决方案就可以了。