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

Pandas如何删除指定列中包含超过1个连字符的行

解决方案

你需要的筛选功能可以通过pandas内置的字符串统计方法快速实现,核心逻辑是统计目标列中连字符-的出现次数,仅保留次数等于1的行即可。

完整实现代码

import pandas as pd
import datetime as dt

df = pd.DataFrame({
    'apple_pie': ["Hong Kong - London - New York", "Fuji Apple - Best apple pie"],
    'shipped_date': ["2021-09-23 21:24:06", "2021-09-25 11:24:06"]
}) 

# 核心筛选逻辑:仅保留apple_pie列包含1个连字符的行,不会统计shipped_date等其他列的连字符
df = df[df['apple_pie'].str.count('-') == 1]

print(df)

输出结果

apple_pie         shipped_date
1    Fuji Apple - Best apple pie  2021-09-25 11:24:06

逻辑说明

  • Series.str.count('-')是pandas针对字符串列的内置方法,逐行统计指定字符的出现次数,性能远高于自行遍历循环
  • 如果目标列存在非字符串类型的值,可以先转成字符串再统计避免报错,写法调整为df['apple_pie'].astype(str).str.count('-') == 1
  • 如果你的需求是统计整行所有列的连字符总数量,用以下写法即可:
    df = df[df.apply(lambda x: x.str.count('-').sum(), axis=1) == 1]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:48:03