根据另一列中的值获取一列中的子字符串

2024-05-16 21:16:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框如下所示:

test_df = pd.DataFrame({'name':['a12','b1','c'],'Length':[2,1,0]})
test_df

    Length  name
0   2   a12
1   1   b1
2   0   c

我希望得到这样的结果:

^{pr2}$

使用此代码:Getting substring based on another column in a pandas dataframe

test_df.apply(lambda x: x['name'][:-x['Length']],axis = 1)
test_df

我得到了和以前一样的数据帧

    Length  name
0   2   a12
1   1   b1
2   0   c

Tags: 数据代码nametestdataframedfonsubstring
3条回答

稍微修改一下您的apply,以相对于len(x['name'])进行切片-

def f(x):
    return x['name'][:len(x['name']) - x['Length_to_drop']]

df.apply(f, 1)

0    a
1    b
2    c
dtype: object

可以使用列表函数来执行以下操作:

outlist = list(map(lambda x,y: x[0:(len(x)-y)], test_df.name, test_df.Length_to_drop))
test_df.name = outlist
print(test_df)

输出:

^{pr2}$

试试这个:

import pandas as pd
test_df = pd.DataFrame({'name':['a12','b1','c'],'Length':[2,1,0]})
test_df['name']=test_df.apply(lambda x: x['name'][:len(x['name'])-x['Length']],axis = 1)
test_df

这将按您的预期输出

^{pr2}$

相关问题 更多 >