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

如何在Pandas中按条件拆分DataFrame列并生成新列?

解决方法

你需要同时提取C列中q前后的内容,单独用replace只能修改原列,无法生成新列。这里提供两种高效的实现方式:

方法一:使用str.extract正则提取

通过正则表达式一次性捕获两个分组,分别对应q之前的内容和q及之后的部分,再处理空值:

import pandas as pd

# 处理DataFrame
dfin[['C', 'D']] = dfin['C'].str.extract(r'^(.*?)(q.*)?$', expand=True)
# 将D列的空值替换为空白字符串
dfin['D'] = dfin['D'].fillna('')

正则说明:

  • ^(.*?):非贪婪匹配从开头到q之前的所有内容(确保只匹配到第一个q)
  • (q.*)?:可选分组,匹配以q开头的所有后续内容;没有q的行该分组为NaN,后续用fillna转为空白

方法二:使用str.split拆分字符串

按q拆分C列,再重新赋值列并拼接D列内容:

import pandas as pd

# 按q拆分,最多拆分为2部分
split_data = dfin['C'].str.split('q', n=1, expand=True)
# 更新C列为拆分后的第一部分
dfin['C'] = split_data[0]
# 生成D列:有拆分结果则拼接q和后续内容,否则留空
dfin['D'] = split_data[1].apply(lambda x: f'q{x}' if pd.notna(x) else '')

代码说明:

  • str.split('q', n=1):只拆分一次,避免C列有多个q时过度拆分
  • 因为拆分后会丢失分隔符q,所以需要在D列手动补回q

处理后你的DataFrame会变成:

ABCD
a1198q24
a2128q6
a61456
b767q22
b156
c3451q2
d111q789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:40:09