python - 如何将 Python Pandas 列中的“2+3”等值转换为其聚合值
问题描述
我在 DataFrame 中有一个名为 fatalities 的列,其中一些值如下所示:
data[''fatalities']= [1, 4, , 10, 1+8, 5, 2+9, , 16, 4+5]
我希望将 like 的值'1+8', '2+9', etc
转换为其聚合值,即
data[''fatalities']= [1, 4, , 10, 9, 5, 11, , 16, 9]
我不确定如何编写代码来为 Python 中的 pandas DataFrame 中的一列执行上述聚合。但是当我尝试使用下面的代码时,它会抛出一个错误。
def addition(col):
col= col.split('+')
col= int(col[0]) + int(col[1])
return col
data['fatalities']= [addition(row) for row in data['fatalities']]
错误:
IndexError: list index out of range
解决方案
使用pandas.eval
与纯 python eval不同的东西:
data['fatalities'] = pd.eval(data['fatalities'])
print (data)
fatalities
0 1
1 4
2 10
3 9
4 5
5 11
6 16
7 9
但是因为这仅适用于100
行,因为错误:
AttributeError:“PandasExprVisitor”对象没有属性“visit_Ellipsis”
那么解决方案是:
data['fatalities'] = data['fatalities'].apply(pd.eval)
推荐阅读
- javascript - 由于错误,无法在 ubuntu 上看到 npm 版本:找不到模块“semver”
- r - 如何在 Stargazer 中更改显着性级别?
- r - 如何使用带有传单的控制层面板显示/隐藏图例?
- php - PHP谷歌翻译服务v3 - 连接问题 - guzzlehttp
- key - Desfire EV2:需要共享主密钥吗?
- azure - 调用 https://graph.microsoft.com/v1.0/organization API 时的 Authorization_IdentityNotFound
- flutter - 使用 Flutter 应用生成 Token - Agora
- mocha.js - sinon从4.x升级到9.x后内存溢出
- amazon-web-services - 用于向 AWS 中的 Lambda 函数添加基于资源的策略的 AWS 开发工具包 API 是什么?
- android - Android Auto:如何在 MediaBrowserService 的 loadChildren() 上返回大量子级?