#python #python_3x #pandas #dataframe #pivot
Существует одномерный массив b b = pd.Series( [110.0, 120.0, Horsepower] [150.0, 175.0, Horsepower] [1351.0, 1601.0, Capacity] [12.0, 14.0, Metric Tons] [1601.0, 1751.0, Capacity]) Name: fiProductClassDesc, dtype: object Первая цифра списка - минимальное значение Вторая цифра списка - максимальное значение Третье значение - название категории (всего 4 шт.) Необходимо создать из него a = pd.Dataframe, всего 8 колонок, где для каждой строки, значения будут присвоены только тем колонкам, для которых совпадает название категории и лэйбла колонки. Остальные 0. Digging Depth_min Digging Depth_max Metric Tons_min Metric Tons_max Horsepower_min Horsepower_max Capacity_min Capacity_max 0 0 0 0 110 120 0 0 0 0 0 0 150 175 0 0 0 0 0 0 0 0 1351 1601 0 0 12 14 0 0 0 0 0 0 0 0 0 0 1601 1751
Ответы
Ответ 1
Я бы делал это так: x = pd.DataFrame(b.to_list()).rename(columns={0: "min", 1: "max"}) res = x.pivot_table(index=x.index, columns=2, fill_value=0).swaplevel(axis=1) res.columns = res.columns.map("_".join) res = res.sort_index(axis=1, ascending=False) результат: In [115]: res Out[115]: Metric Tons_min Metric Tons_max Horsepower_min Horsepower_max Capacity_min Capacity_max 0 0 0 110 120 0 0 1 0 0 150 175 0 0 2 0 0 0 0 1351 1601 3 12 14 0 0 0 0 4 0 0 0 0 1601 1751 PS думаю добавить нулевые столбцы Digging Depth_min и Digging Depth_max проблем не составит пошаговое решение: In [116]: pd.DataFrame(b.to_list()).rename(columns={0: "min", 1: "max"}) Out[116]: min max 2 0 110.0 120.0 Horsepower 1 150.0 175.0 Horsepower 2 1351.0 1601.0 Capacity 3 12.0 14.0 Metric Tons 4 1601.0 1751.0 Capacity In [117]: x.pivot_table(index=x.index, columns=2, fill_value=0).swaplevel(axis=1) Out[117]: 2 Capacity Horsepower Metric Tons Capacity Horsepower Metric Tons max max max min min min 0 0 120 0 0 110 0 1 0 175 0 0 150 0 2 1601 0 0 1351 0 0 3 0 0 14 0 0 12 4 1751 0 0 1601 0 0 In [120]: res Out[120]: Capacity_max Horsepower_max Metric Tons_max Capacity_min Horsepower_min Metric Tons_min 0 0 120 0 0 110 0 1 0 175 0 0 150 0 2 1601 0 0 1351 0 0 3 0 0 14 0 0 12 4 1751 0 0 1601 0 0 In [121]: res.sort_index(axis=1, ascending=False) Out[121]: Metric Tons_min Metric Tons_max Horsepower_min Horsepower_max Capacity_min Capacity_max 0 0 0 110 120 0 0 1 0 0 150 175 0 0 2 0 0 0 0 1351 1601 3 12 14 0 0 0 0 4 0 0 0 0 1601 1751
Комментариев нет:
Отправить комментарий