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

如何在Pandas DataFrame中按另一列值拆分列并保留指定列

按对应列值拆分字符串并保留指定列的解决方案

你之前的代码错误地使用了第一行的分隔符df['word'].values[0],导致所有行都用同一个字符拆分,无法实现按每行对应word列的值拆分string列的需求。以下是可行的解决方法:

方法1:使用apply逐行处理(推荐)

通过apply遍历每一行,利用当前行的word值作为分隔符拆分string,并取拆分后的第一部分作为want列:

import pandas as pd
df = pd.DataFrame( {'string':['anfhfd', 'rnvkds', 'bkfsgk'], 
                'word':['f', 'v', 'k'] } )

# 添加want列,按对应word值拆分string并取第一部分
df['want'] = df.apply(lambda row: row['string'].split(row['word'], n=1)[0], axis=1)

运行后得到的结果:

string word  want
0  anfhfd    f    an
1  rnvkds    v    rn
2  bkfsgk    k     b

方法2:拆分后提取指定列

如果需要先拆分出want和notwant再保留want,可以用以下方式:

# 逐行拆分并生成临时列
split_df = df.apply(lambda row: pd.Series(row['string'].split(row['word'], n=1), index=['want', 'notwant']), axis=1)
# 将want列合并到原DataFrame
df = df.join(split_df['want'])

原理说明

Pandas的str.split()方法的pat参数仅支持单个字符串/正则表达式,无法直接传入Series作为每行的动态分隔符。因此需要用apply(axis=1)逐行处理,确保每行使用对应的word值进行拆分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:24:56