如何从数据帧值而不是字符串中获取列表

问题描述 投票:0回答:1

我有一个Excel文件,其结构如下:

标题 列表
标题_1 ['str_1','str_2']
标题_2 ['str_3','str_4']

我想获取json结构中的数据:

{"0":{"Title": "Title_1", "List": ['str_1', 'str_2']}, "1":{"Title": "Title_2", "List": ['str_3', 'str_4']}}

而不是:

{"0":{"Title": "Title_1", "List": "['str_1', 'str_2']"}, "1":{"Title": "Title_2", "List": "['str_3', 'str_4']"}}

如何使用Python中的pandas模块来实现这一点?

我已经尝试过:

df = pd.read_excel("my_excel.xlsx")

df.to_dict("index")

并得到:

{"0":{"Title": "Title_1", "List": "['str_1', 'str_2']"}, "1":{"Title": "Title_2", "List": "['str_3', 'str_4']"}}
python json pandas
1个回答
0
投票

要获得所需的数据类型,您可以尝试以下转换:

import ast
def convert_to_list(string_value):
try:
    return ast.literal_eval(string_value)
except (ValueError, SyntaxError):
    return string_value

df['List'] = df['List'].apply(convert_to_list)

此函数仅接受一个字符串值并执行以下操作:

  • 安全地尝试将输入字符串转换为Python文字表达式(列表)
  • 如果输入字符串可以转换为列表,它将返回一个列表,否则如果有
    ValueError
    SyntaxError
    它将返回原始字符串值
© www.soinside.com 2019 - 2024. All rights reserved.