首页 > 解决方案 > 将 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]'

有任何想法吗?

标签: pythonpandas

解决方案


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)

推荐阅读