python - 如何在 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 中使用字符串操作?
解决方案
推荐阅读
- iframe - 如何从 postMessage() 访问数据?
- swift - Swift、核心数据和Int16加法问题
- javascript - 触发云功能时“TypeError:无法读取未定义的属性'孩子'”
- ffmpeg - 我可以在 ffmpeg 代码上使用 windows api 函数吗?
- c# - 字符串总是 Little Endian Unicode 吗?
- jquery - 在 jQuery 中,如何处理从变量构建的多个选择器?
- .net - 分配给进程的最大内存是多少(任何 .net 应用程序)
- python-3.x - 如何将python3(Pygame)中的游戏数据保存在txt文件中?
- java - 将数组从高到低排序
- python - 有没有办法让标签的字体大小动态调整到 PyQt5 中标签中的文本?