如何基于第一个下划线拆分DataFrame列并获取非列表格式结果?
按第一个下划线拆分列并返回字符串的解决方法
问题根源
你用str.split('_',n=1).str[1:]得到列表格式的结果,是因为split(n=1)把Male_85__and_over拆成了['Male', '85__and_over'],[1:]是从索引1开始切片,取出的是包含单个元素的列表,而非单个字符串。
修正方案
方案1:调整切片索引
把str[1:]改成str[1],直接获取拆分后的第二个元素(字符串类型):
test['gender'] = test['column_Name_pivoted'].str.split('_').str[0] test['age'] = test['column_Name_pivoted'].str.split('_', n=1).str[1]
方案2:用str.partition更高效
partition专门针对按第一个分隔符拆分的场景,会返回(前半段, 分隔符, 后半段)的元组,直接提取后半段即可:
# 批量赋值写法 test[['gender', 'age']] = test['column_Name_pivoted'].str.partition('_')[['0', '2']] # 或者解包赋值 test['gender'], _, test['age'] = zip(*test['column_Name_pivoted'].str.partition('_'))
效果验证
针对示例值Male_85__and_over,两种方案都会输出:
- gender列:
Male(字符串) - age列:
85__and_over(字符串)
内容的提问来源于stack exchange,提问作者Tinkinc
相关产品推荐
相关产品推荐

