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

如何从DataFrame字符串列提取指定分隔符后的内容并拆分列?

当然可以呀!这在Pandas里完全能实现,而且有好几种简单的方法,我给你详细说说:

解决方案

方法1:使用str.split() 直接分割

这是最直观的方法,通过指定分隔符.,并设置只分割一次(n=1),就能把字符串拆成你需要的两部分,直接转成新的DataFrame:

import pandas as pd

# 先模拟你的原始DataFrame
df = pd.DataFrame({'Col': ['2017-09-19.I.L_WAY', '2017-09-19.I.L_TEMP']})

# 分割字符串,expand=True直接生成新的DataFrame
df1 = df['Col'].str.split('.', n=1, expand=True)
# 给新列命名
df1.columns = ['Col1', 'Col2']

# 查看结果
print(df1)

运行后你会得到这样的输出:

Col1       Col2
0  2017-09-19  I.L_WAY
1  2017-09-19  I.L_TEMP

如果想保留原DataFrame的列,只需要用pd.concat把原列和新列合并:

df1 = pd.concat([df, df['Col'].str.split('.', n=1, expand=True).rename(columns={0:'Col1', 1:'Col2'})], axis=1)

方法2:使用正则表达式str.extract() 精准提取

如果你的字符串格式固定(比如前面一定是日期),用正则表达式提取会更严谨,能确保只匹配符合格式的内容:

# 用正则提取日期部分和后续内容
df1 = df['Col'].str.extract(r'^(\d{4}-\d{2}-\d{2})\.(.*)$', expand=True)
df1.columns = ['Col1', 'Col2']

这里的正则表达式^(\d{4}-\d{2}-\d{2})\.(.*)$意思是:

  • ^ 匹配字符串开头
  • (\d{4}-\d{2}-\d{2}) 匹配4位数字-2位数字-2位数字的日期格式,作为第一组(对应Col1)
  • \.\ 转义匹配分隔符.
  • (.*) 匹配.之后的所有内容,作为第二组(对应Col2)

两种方法都能完美实现你的需求,选哪种全看你自己的习惯和场景哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:09:40