如何从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
相关产品推荐
相关产品推荐

