在数组中的可变数量的值中查找最小值和最大值
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]
我有一个列中包含多个数组的数据框。 我试图找到每列的最小值和最大值。
我可以用单个值拆分数组并从那里找到最小值和最大值 ([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] |