在数组中的可变数量的值中查找最小值和最大值

Find min and max in variable number of values in array

我有一个列中包含多个数组的数据框。 我试图找到每列的最小值和最大值。

我可以用单个值拆分数组并从那里找到最小值和最大值 ([9.75 x 8.00]),但是当数组中有多个值时它会变得更加复杂 ([10 x 14, 10 x 11, 1.5 x 1.75])。

这是我的资料:

df[['Length', 'Width']]=df['Array'].str.split("x",expand=True,)
df['Max'] = df[['Length', 'Width']].values.max(1)

这是我想要得到的:

df = pd.DataFrame({"Array": ["[9.75 x 8.00]", "[10 x 14, 10 x 11, 1.5 x 1.75]", "[54 x 80, 39 x 75, 78 x 80, 39 x 80, 54 x 75, 60 x 80]"],"Max":["[9.75]", "[14,11,1.75]", "[80,75,80,80,75,80]"],"Min":["[8.00]", "[10,10,1.5]", "[54,39,78,39,54,60]"]})

困难的部分是剥离和拆分字符串:

df1 = df['Array'].str.strip('[]').str.split(', ').explode().str.split(' x ', expand=True)

df[['Max', 'Min']] = pd.concat([df1.max(1).groupby(level=0).apply(list), 
                                df1.min(1).groupby(level=0).apply(list)], axis=1)

输出:

Array Max Min
[9.75 x 8.00] [9.75] [8.0]
[10 x 14, 10 x 11, 1.5 x 1.75] [14.0, 11.0, 1.75] [10.0, 10.0, 1.5]
[54 x 80, 39 x 75, 78 x 80, 39 x 80, 54 x 75, 60 x 80] [80.0, 75.0, 80.0, 80.0, 75.0, 80.0] [54.0, 39.0, 78.0, 39.0, 54.0, 60.0]