【发布时间】:2020-11-04 09:54:27
【问题描述】:
我希望能够从 pandas UDF(应用函数)返回多个列。这很好用,只要数据框不为空!
如果它是空的,它会失败:not enough values to unpack (expected 3, got 0)。这是否被视为熊猫中的错误?还是应该强制用户在执行函数之前手动检查过滤数据帧的长度?或者有没有更好的方法来避免遇到这个问题?
import pandas as pd
df = pd.DataFrame({'foo':[1,2,3], 'bar':[4,5,6]})
def my_function(x):
#print(x)
# some computation
# returns multiple values (tuple)
# simplified here
return 1,1,1
df = df[df.foo > 10]
df['r1'], df['r2'], df['r3'] = zip(*df.apply(my_function, axis=1))
df
【问题讨论】:
-
嗯,我不会承受这么多痛苦,我就写这样的东西
df['r1'], df['r2'], df['r3'] = zip(*df.apply(my_function, axis=1)) if not df.empty else ([],[],[])
标签: python pandas apply user-defined-functions