如何从存储列表的pandas Series中移除所有0元素
移除Pandas列表列中的0值
直接通过列表推导式遍历目标列的每个列表,过滤掉值为0的元素即可,这种写法执行效率最高。
首先复现测试数据:
import pandas as pd df = pd.DataFrame({ 'id': [0, 1], 'vl': [ [1, 0, 2], [0, 1, 5] ] })
执行过滤代码:
df['vl'] = [[item for item in sub_list if item != 0] for sub_list in df['vl']]
处理后打印df就能得到期望的输出:
id vl 0 0 [1, 2] 1 1 [1, 5]
如果你习惯用apply写法,也可以用下面的代码,效果完全一致,只是数据量大的时候性能比列表推导式稍差:
df['vl'] = df['vl'].apply(lambda sub_list: [item for item in sub_list if item != 0])
说明:上述两种写法都会移除对应列表中所有等于0的元素,无论列表中是否存在0都可以正常执行,不会抛出异常。
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

