如何在Pandas中使用split方法且不丢失分割关键字数据?
保留分割关键字'g'的DataFrame列拆分方法
原始数据
df col1 0 100g strawberry 1 800g apple 2 904g melon
原问题
使用以下代码拆分时,会丢失分隔符'g':
df[['col2']] = pd.DataFrame(df.col1.str.split('g', expand=True))
得到的结果不符合需求:
df col1 col2 0 100 strawberry 1 800 apple 2 904 melon
需要得到的目标结果:
df col1 col2 0 100 g strawberry 1 800 g apple 2 904 g melon
解决方案
方法1:正则提取(推荐,精准可控)
使用str.extract配合正则表达式,直接提取数字部分和带'g'的后缀部分:
import pandas as pd # 原始数据 df = pd.DataFrame({ 'col1': ['100g strawberry', '800g apple', '904g melon'] }) # 正则提取拆分 df[['col1', 'col2']] = df['col1'].str.extract(r'(\d+)(g .+)', expand=True)
正则说明:
(\d+):匹配连续的数字字符,作为新的col1(g .+):匹配以'g '开头的后续所有内容,作为col2
方法2:拆分后拼接'g'
如果不想用正则,可以先拆分再手动把'g'加回到col2中:
import pandas as pd df = pd.DataFrame({ 'col1': ['100g strawberry', '800g apple', '904g melon'] }) # 按'g'拆分,只拆1次 split_data = df['col1'].str.split('g', n=1, expand=True) # 重新赋值列 df['col1'] = split_data[0] df['col2'] = 'g ' + split_data[1]
最终结果
两种方法运行后都能得到目标数据表:
df col1 col2 0 100 g strawberry 1 800 g apple 2 904 g melon
内容的提问来源于stack exchange,提问作者now
相关产品推荐
相关产品推荐

