首页 > 解决方案 > 如何在 pandas eval 函数中使用字符串操作?

问题描述

如果 df 是数据框

data = {'Project':['1001', '1002', '1003', '1004'], 'Subject':['57001-01', '57001-02', '57001-03', '57001-04']} 
df = pd.DataFrame(data) 

要添加新列,我们可以使用

df["Subj_id"]=df["Project"]+"-"+df["Subject"].str[:5]
df
  Project Subject   Subj_id
0 1001    57001-01  1001-57001
1 1002    57001-02  1002-57001
2 1003    57001-03  1003-57001
3 1004    57001-04  1004-57001

但是如果我需要使用 df.eval() 动态添加这个新列,我尝试了以下方法:

col_def='Subj_id = Project +"-"+ Subject.str[:5]'
df.eval('{0}'.format(col_def), inplace = True,engine='python') 

但它给出了以下错误:TypeError: unsupported operand type(s) for -: 'str' and 'str'

如何在 eval 中使用字符串操作?

标签: pythonpandaseval

解决方案


推荐阅读