tongchenkeji 发表于:2023-3-6 17:19:560次点击 已关注取消关注 关注 私信 pyodps我想获得df某一列trim后长度为0,而且不是null的量级,应该怎么写呢?[阿里云MaxCompute] 暂停朗读为您朗读 pyodps我想获得df某一列trim后长度为0,而且不是null的量级,应该怎么写呢? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 MaxCompute# 云原生大数据计算服务 MaxCompute3255
HaydenGuoAM 2023-11-27 17:59:46 1 可以使用以下代码来得到 df 某一列 trim 后长度为 0,且不为 null 的数量: from odps.df import Scalarfrom odps import types# 假设您要操作的 DataFrame 名称为 df,某一列名称为 col_name# 先使用 trim 函数将该列中的字符串前后空格去除trimmed_col = df[col_name].trim()# 统计符合条件的记录数count = df.filter((Scalar(trimmed_col) == ').ifelse(1, 0).astype(types.boolean) & df[col_name].notnull()).count().execute() 这段代码的逻辑是: 使用 trim 函数将目标列中的字符串的前后空格去除,生成一个新的被 trim 后的列 trimmed_col; 使用 filter 函数筛选出满足条件的记录,注意要加上 & df[col_name].notnull() 条件,以排除 null 值。在这里,我们使用 Scalar 函数将一个 Python 值转化为一个 ODPS 语义的标量,即将 trimmed_col == ‘ 转化为一个标量(即一个包含一个元素的 DataFrame),然后使用 ifelse 函数将其转化为 0 或 1 的值,并将其转化为 boolean 类型。这样就可以排除掉符合要求的 null 值了。 使用 count 函数统计得到满足条件的记录数。 最后,可以输出 count 值,或将它存储到其他变量中进行进一步的处理。