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

Python Pandas DataFrame中删除pjp-至首个|间内容的问题求助

解决DataFrame中特定列的字符串替换问题

首先,咱们来梳理下你代码里的几个问题:

  • 你直接对整个DataFrame调用str.startswith,但这个方法是给**单列(Series)**用的,整个DataFrame没有这个属性,所以会触发"仅适用于字符串"的错误。
  • 你的replace方法没开启正则模式,而且正则表达式写得不对,没法精准匹配pjp-到第一个|的内容。
  • 最后head(df)应该写成df.head(),因为head是DataFrame的内置方法,得通过实例调用。

下面是修正后的代码,专门针对code列做处理:

import pandas as pd

# 读取数据(read_csv直接返回DataFrame,不用再转一次)
df = pd.read_csv("test.csv", delimiter=",")

# 对code列执行正则替换:匹配从pjp-开始到第一个|的所有内容,替换为空
df['code'] = df['code'].str.replace(r'pjp-.*?\|', '', regex=True)

# 查看处理后的结果
print(df)
print(df.head())

代码细节解释:

  • df['code'].str.replace(...):只针对code这一列调用字符串方法,确保操作的是字符串类型的数据,从根源避免类型错误。
  • 正则表达式r'pjp-.*?\|':
    • pjp-:精准匹配开头的固定标识
    • .*?:非贪婪匹配任意字符(这样只会匹配到第一个|就停止,不会误删后面的内容)
    • \|:转义|,因为它在正则里是特殊字符,必须用反斜杠转义才能匹配实际的竖线
  • regex=True:告诉pandas这是正则表达式替换,不是普通的字符串匹配替换

最终效果:

运行后你的DataFrame会完全符合期望输出:

Quantity code boxes
34 3cex 10
20 4cex 8
12 5cex 6
40 6cex 14

额外提个小细节:如果code列里有部分行不满足pjp-开头的格式,这个代码也不会出错,只会替换符合模式的内容,不影响其他行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:21:07