Python 将嵌套系列转换为Numpy ndarray

Python 将嵌套系列转换为Numpy ndarray,python,pandas,numpy,Python,Pandas,Numpy,我有一个熊猫数据框,看起来像这样: Category Subcategory Count A 1 [20.0 38.5, 3.2 8.5] A 2 [3.7 8.2, 5.7 5.5] A 3 [12.4 23.5, 24.4 8.9] B 1 [3.7 8.2, 5.7 5.5] B 2 [12.4 2

我有一个熊猫数据框,看起来像这样:

Category  Subcategory  Count
A         1            [20.0 38.5, 3.2 8.5]
A         2            [3.7 8.2, 5.7 5.5]
A         3            [12.4 23.5, 24.4 8.9]
B         1            [3.7 8.2, 5.7 5.5]
B         2            [12.4 23.5, 24.4 8.9]
...      ...           ...
...      ...           ...
[
[20.0, 38.5],
[3.2, 8.5]
]
Count
包含我希望最终转换为
Numpy-ndarray
的字符串。 最后,我的目标是为每个
子类别
每个
类别
创建一个数据数组。
我尝试的是按
类别对df进行分组
,并迭代每个组,获取
计数
的字符串,去掉
[]
并在空格处拆分它,然后将它们与
np.to_numpy()
一起使用以创建数据数组,但它似乎没有按预期工作

例如,对于
类别A
子类别1
,我希望如下所示:

Category  Subcategory  Count
A         1            [20.0 38.5, 3.2 8.5]
A         2            [3.7 8.2, 5.7 5.5]
A         3            [12.4 23.5, 24.4 8.9]
B         1            [3.7 8.2, 5.7 5.5]
B         2            [12.4 23.5, 24.4 8.9]
...      ...           ...
...      ...           ...
[
[20.0, 38.5],
[3.2, 8.5]
]
有什么建议吗

谢谢

--到目前为止,这是一种有效但不高效的方法:

df_grouped = df.groupby('Category')
for group_name, df_group in df_grouped:
    f = df_group.Count.str.strip("[]")
    for items, values in f.items():
        List = []
        s = values.split(",")
        for i in s:
            vals = i.strip(" ").split(" ")
            val1 = float(vals[0])
            val2 = float(vals[1])
            List.append([val1, val2])

尝试此操作,它应该去掉括号并创建双数组:

def reshape_array_string(x):
    temp = x.replace('[', '').replace(']','').replace(',','').split(" ")
    shapelen = len(temp)//2
    return (np.reshape(temp, [shapelen,2])) 

df['Count'].apply(reshape_array_string)
输出:

0              [[20.0, 38.5], [3.2, 8.5]]
1    [[3.7, 8.2], [5.7, 5.5], [4.6, 2.2]]


为什么将4个元素
计数
列转换为2x2数据列?总是这样吗?你的试验怎么没有达到预期的效果?事实上,它并不总是2x2。它是一个二维数组,将每行拆分为
字符,然后在
空间中拆分为
字符。我最天真的方法是在每个df行上循环,去掉
[]
并拆分为逗号,但随后我必须迭代新列表以在空间中拆分并在数组中附加每个值,但这必须对1.2mil行执行,因此,我想知道如何才能更有效地完成这项工作。考虑使用<代码> AST。我想这就是你想要的,我添加了第三个字符串,因为你说可能不止两个pairs,我相信这是正确的。我将在完整的数据集中进行一次尝试,并让您知道是否存在任何效率问题。谢谢!Thx,让我知道,我很感兴趣,这是一个很大的数据集。