如何在Pandas中将字符串格式列表转换为整数列表
问题描述
我有一份字典格式的数据(同时也是Pandas DataFrame中的一列),字典的值是字符串形式的数字列表,示例数据如下:
{569328: '[ 596005 4321416 5802640 6031690 6043910 8600475 8642629 9203255 9345445 10177065 10455451 13428248 22139349 22591458 24627241 24750476 26261826 26405611 27079105 27096884]', 574660: '[ 5956195 11260528 22181831 22437920 22642946 23278096 23407037 23458128 24244657 24355363 25014714 25115774 25156886 27047688 27089078 27398716]', 1187498: '[ 5855196 7755392 11183886 22894980 24648618 27185399]', 1226468: '[ 3573464 6279285 6294985 6542463 6981930 7427770 10325811 14970234 16878329 17935009 21811002 22329817 23543436 23907898 24456108 25283772]', 1236571: '[ 2777078 2826073 5944733 10484188 11052747 14682645 15688752 22333410 22614097 22646501 22783765 22978728 23231683 24259740 24605606 24839432 25492752 27009992 27044704]'}
需要将这些字符串值转换为合法的整数列表,预期结果如下:
{569328: [596005, 4321416,5802640,6031690,6043910,8600475,8642629,9203255,9345445, 10177065,10455451,13428248,22139349,22591458,24627241,24750476,26261826,26405611, 27079105,27096884], 574660: [5956195,11260528,22181831,22437920,22642946,23278096,23407037,23458128, 24244657,24355363,25014714,25115774,25156886,27047688,27089078,27398716], ...}
解决方案
1. 直接处理字典
遍历字典的键值对,对每个字符串值做清洗和类型转换:
original_dict = {569328: '[ 596005 4321416 5802640 6031690 6043910 8600475 8642629 9203255 9345445 10177065 10455451 13428248 22139349 22591458 24627241 24750476 26261826 26405611 27079105 27096884]', 574660: '[ 5956195 11260528 22181831 22437920 22642946 23278096 23407037 23458128 24244657 24355363 25014714 25115774 25156886 27047688 27089078 27398716]', 1187498: '[ 5855196 7755392 11183886 22894980 24648618 27185399]', 1226468: '[ 3573464 6279285 6294985 6542463 6981930 7427770 10325811 14970234 16878329 17935009 21811002 22329817 23543436 23907898 24456108 25283772]', 1236571: '[ 2777078 2826073 5944733 10484188 11052747 14682645 15688752 22333410 22614097 22646501 22783765 22978728 23231683 24259740 24605606 24839432 25492752 27009992 27044704]'} converted_dict = {} for key, value in original_dict.items(): # 去掉首尾方括号,按空格分割,过滤空字符串后转整数 num_list = [int(num) for num in value.strip('[]').split() if num] converted_dict[key] = num_list
2. 处理Pandas DataFrame中的列
如果该数据是DataFrame的一列,用apply方法批量转换:
import pandas as pd # 假设DataFrame名为df,目标列名为'target_column' df['converted_column'] = df['target_column'].apply(lambda x: [int(num) for num in x.strip('[]').split() if num])
关键步骤说明
strip('[]'):移除字符串首尾的方括号split():按任意数量空格分割字符串,自动处理多空格场景if num:过滤分割后可能出现的空字符串int(num):将分割后的字符串转换为整数
内容的提问来源于stack exchange,提问作者Lusian
相关产品推荐
相关产品推荐

