我绞尽脑汁想弄清楚如何在Python的库polars中使用groupby
和apply
。
来自Pandas,我使用:
def get_score(df):
return spearmanr(df["prediction"], df["target"]).correlation
correlations = df.groupby("era").apply(get_score)
但在极地,这行不通。
我尝试了几种方法,主要是围绕:
correlations = df.groupby("era").apply(get_score)
但这会失败,并显示错误消息:
'无法获取DataFrame属性'_df '。确保返回DataFrame对象。:PyErr { type:〈class 'AttributeError'〉,value:AttributeError(“'numpy.float64' object has no attribute '_df'"),
有什么想法吗
1条答案
按热度按时间bvjxkvbb1#
从
polars>=0.10.4
开始,您可以使用pl.spearman_rank_corr
函数。如果你想使用一个自定义函数,你可以这样做:
多列/多表达式自定义函数
Polars提供的功能
两个输出:
单列/表达式自定义函数
我们还可以通过
.apply
或.map
在单个表达式上应用自定义函数。下面是一个例子,我们可以平方列与自定义函数和正常的polars表达式。表达式语法应该总是首选的,因为它快得多。
apply
和map
有什么区别?map
适用于整个列series
。apply
处理单个值或单个组,具体取决于上下文。select
上下文:map
Series
apply
Union[int, float, str, bool]
groupby
上下文:map
Series
apply
Series