You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars中apply自定义函数仅首行有效,后续返回null的问题求助

问题解决:Polars apply返回DataFrame后续行出现null

问题原因

Polars的df.apply()方法原本是用来处理每行返回标量或与输入列数匹配的序列,当你返回DataFrame这种复杂结构时,只有第一行能被正确解析,后续行的DataFrame会因类型不兼容被强制转为null。

解决方案

改用map_elements()方法,它专门支持每行返回任意复杂类型(包括DataFrame),同时需要显式指定返回类型为pl.DataFrame:

修改后的代码

import polars as pl
import numpy as np

def myfunc(x):
    data1 = np.random.uniform(low=0, high=25, size=(5,))
    data2 = np.random.uniform(low=0, high=25, size=(5,))
    df = pl.DataFrame([data1, data2])
    return df

df = pl.DataFrame({
    'val1': [1, 2, 3, 4, 5],
    'val2': [1, 2, 3, 4, 5]
})

# 使用map_elements替代apply,指定返回类型
output = df.map_elements(myfunc, return_dtype=pl.DataFrame)
# 展开所有列
output = output.explode(output.columns)

print('\nPolars\n',output)

解释

  • map_elements()会逐行处理输入,完整保留每行返回的DataFrame结构,不会因类型不兼容转为null
  • return_dtype=pl.DataFrame明确告知Polars每行返回的是DataFrame,确保类型解析逻辑正确
  • 后续的explode()可以正常展开所有生成的行,得到完整的合并结果

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:58:18