python - 将 Pandas df 列的字符串列表转换为整数
问题描述
我有一个这样的df”
col1
['525', '2830', '43', '567']
['432', '324', '3993', '5675']
['234', '2830', '342312', '4410']
df.applymap(type)
显示此列中的所有行是<class 'str'>
:
我正在尝试将此 df.col 中的元素转换为整数并将它们相加到一个新列中。我已经尝试了十亿件事,但都没有成功。
#attempts
#converted to list
map(int, list())
map(int, list().split())
#geeks for geeks suggestions:
for i in range(0, len(list)):
list[i] = int(list[i])
test_list = [int(i) for i in test_list]
我只是不断收到这个错误:
ValueError: invalid literal for int() with base 10: '[525 2830 3993 4410]'
有任何想法吗?
解决方案
df['sum'] = df['col1'].apply(lambda x: sum(int(v) for v in x))
print(df)
印刷:
col1 sum
0 [525, 2830, 43, 567] 3965
1 [432, 324, 3993, 5675] 10424
2 [234, 2830, 342312, 4410] 349786
编辑:
import ast
df['sum'] = df['col1'].apply(lambda x: sum(int(v) for v in ast.literal_eval(x)))
print(df)
推荐阅读
- swagger - Swagger 不工作有什么建议吗?
- elasticsearch - 查找存储在 ElasticSearch 中的字段中的不同字符串值列表
- ssl - 有没有办法为 SSLSocketFactory 和 SSLServerSocketFactory 指定端口范围
- c# - 比较来自用户的两个列表
- javascript - 如何切换一个类以显示 VueJS 中哪个选项卡处于活动状态?
- android - 如何将数据从 Android 应用程序传递到三星 Bixby 胶囊?
- c# - c#:递归选择排序不显示任何结果
- html - 如何读取文本文件,将其解析为 Web 界面并存储更改
- java - java - 如何在java servlet中链接外部css?
- c# - 如何在 C# MVC 应用程序中使用行级安全性