Python 从dataframe中存储为字符串的列表中提取项

Python 从dataframe中存储为字符串的列表中提取项,python,python-3.x,pandas,list,series,Python,Python 3.x,Pandas,List,Series,我有下面的数据框 data = [{'a': 1, 'b': '[2,3,4,5,6' }, {'a': 10, 'b': '[54,3,40,5'}] test = pd.DataFrame(data) display(test) a b 0 1 [2,3,4,5,6 1 10 [54,3,40,5 我想在b列中列出数字,但由于列表中只有[开头,不允许我创建列表,我试图删除“[”,以便提取数字,但我不断出错,我做错了什么 这就是数字的存储方式 test.i

我有下面的数据框

data = [{'a': 1, 'b': '[2,3,4,5,6' }, {'a': 10, 'b': '[54,3,40,5'}] 
test = pd.DataFrame(data) 
display(test)

    a     b
0   1   [2,3,4,5,6
1   10  [54,3,40,5
我想在b列中列出数字,但由于列表中只有[开头,不允许我创建列表,我试图删除“[”,以便提取数字,但我不断出错,我做错了什么

这就是数字的存储方式

test.iloc[1,1]

'[54,3,40,5'
这就是我试图删除“[”的地方

我想要实现的是将b作为一个适当的列表,这样我就可以应用其他函数

    a     b
0   1   [2,3,4,5,6]
1   10  [54,3,40,5]

要使您的
'b'
列成为列表,您可以首先删除开头的开方括号,然后对
'b'
列的每个元素使用
拆分方法

test['b'] = test['b'].str.replace('[', '').map(lambda x: x.split(','))

test
#     a            b
# 0   1  [2, 3, 4, 5, 6]
# 1  10  [54, 3, 40, 5]
试试看:

def func(col):
  return eval(col+']')

test['b'] = test['b'].apply(func)

在替换字符或转换为列表时,您什么时候出现错误的?您不能直接使用to_list()将字符串转换为列表。请尝试以下操作,
pd.eval(test['b']+“])
test.b.str.replace(r“[”,”).str.split(“,”
您可以尝试以下操作
test['b']=test['b']]].str.findall(r'\d+)
如果您解释了所提供的代码是如何回答问题的,这将是一个更好的答案。我在字符串中添加']',并调用函数eval()将字符串转换为对象
def func(col):
  return eval(col+']')

test['b'] = test['b'].apply(func)
import pandas as pd
data = [{'a': 1, 'b': '[2,3,4,5,6' }, {'a': 10, 'b': '[54,3,40,5'}] 
test = pd.DataFrame(data) 
print(test['b'][0][1:])
for i in range(len(test['b'])):
    test['b'][i] = test['b'][i][1:]