如何在Julia DataFrame中获取指定列存储的最长列表?
问题解决方法
错误原因
你原有代码未指定排序依据,partialsortperm默认对col2的列表做字典序比较:Julia的向量逐元素比较规则下,['a','c']的第二个元素'c'大于['a','b','c']的第二个元素'b',所以倒序排序时['a','c']排在最前,得到不符合预期的结果。
正确实现
方法1:指定排序依据取单条最长行
给partialsortperm增加by=length参数,指定按列表长度排序即可得到预期结果:
dataframe[partialsortperm(dataframe.col2, 1, by=length, rev=true), :]
方法2:筛选所有最长行(适配多并列最长场景)
如果存在多个长度相同的最长列表,要全部取出的话用筛选逻辑更直观:
# 计算col2列的最大列表长度 max_len = maximum(length, dataframe.col2) # 筛选所有符合长度要求的行 result = filter(row -> length(row.col2) == max_len, dataframe)
内容的提问来源于stack exchange,提问作者AfterFray
相关产品推荐
相关产品推荐

