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

如何用最Pythonic的方式删除DataFrame中指定列列表长度为X的行?

高效删除DataFrame中指定列列表长度为X的行

对于你的需求,最Pythonic且高效的方式是利用pandas的矢量化操作,完全避免显式循环。以下是两种最优实现:

方法一:使用str.len()(推荐,最高效)

str.len()是pandas专为序列设计的矢量化方法,对列表类型的列也能直接生效,内部由优化过的C代码执行,速度远快于Python层面的循环或普通apply。

import pandas as pd

data = {'column_1': ['1', '2', '3'],
        'column_2': [['A','B'], ['A','B','C'], ['A']], 
        'column_3': ['a', 'b', 'c']}

df = pd.DataFrame.from_dict(data)

# 删除column_2中列表长度为3的行
filtered_df = df[df['column_2'].str.len() != 3]
print(filtered_df)

输出结果:

column_1 column_2 column_3
0        1    [A, B]        a
2        3       [A]        c

方法二:使用apply(len)

如果你的列中存在非列表类型元素(比如偶尔的None或字符串),str.len()可能报错,此时可以用apply(len),它会逐个调用Python的len()函数,虽然效率略低于str.len(),但依然是无显式循环的Pythonic写法:

filtered_df = df[df['column_2'].apply(len) != 3]

关键说明

  • 矢量化操作是pandas的核心优势,能最大程度利用底层优化,处理大规模数据时性能差距尤为明显。
  • 两种方法都无需手动写循环,符合Pythonic的简洁风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:35:25