如何为含float列表的DataFrame新增列统计列表元素个数?
解决方法:一行代码搞定,无需自定义遍历函数
嘿,这个需求其实超级简单,完全不用自己写遍历元素的函数,pandas自带的方法就能轻松实现!下面给你两种简洁的方案,按需选择:
方案1:直观易懂的 apply(len)
这是最直观的写法,直接对目标列的每个元素调用len()函数,自动返回每个列表的长度:
首先先构造一个示例DataFrame方便演示:
import pandas as pd # 模拟你的数据:某列是float类型的列表 df = pd.DataFrame({ 'float_lists': [[1.1, 2.2, 3.3], [4.4], [], [5.5, 6.6]] })
然后一行代码新增长度列:
df['list_length'] = df['float_lists'].apply(len)
方案2:大数据量更高效的 str.len()
如果你的DataFrame数据量很大,推荐用这个矢量化的方法,性能比apply更优——pandas的str访问器不仅能处理字符串,对列表这类序列也能生效,直接返回每个列表的长度:
df['list_length'] = df['float_lists'].str.len()
最终结果
两种方法都会得到相同的输出:
float_lists list_length 0 [1.1, 2.2, 3.3] 3 1 [4.4] 1 2 [] 0 3 [5.5, 6.6] 2
总结一下:完全不需要手动写遍历逻辑,这两种方法都能一行解决问题,apply(len)胜在直观好理解,str.len()则在大数据场景下速度更快,根据你的实际数据规模选就行~
内容的提问来源于stack exchange,提问作者LDH
相关产品推荐
相关产品推荐

