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

