Страницы

Поиск по вопросам

суббота, 21 марта 2020 г.

Конвертация pd.Series в pd.Dataframe определенного формата

#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

Комментариев нет:

Отправить комментарий