Как преобразовать более двух разных столбцов в панде в кадре данных в строки? - PullRequest
0 голосов
/ 26 мая 2018

пример: в этой ссылке столбцы цен и единиц необходимо преобразовать в отдельные строки

см. Ссылку для описания изображения.

In [1]: data
Out[1]: 
      Name item  Wk1 price  Wk2 price  Wk1 units  Wk2 units
   Vehicle  Car        978        966        100        120

когдая использовал расплав, я получаю и цену, и единицы в одном столбце.Есть ли способ получить цену и единицы измерения в виде отдельных столбцов

In [2]: data.melt(id_vars = ['Name', 'item'])
Out[2]: 
      Name item   variable  value
0  Vehicle  Car  Wk1 price    978
1  Vehicle  Car  Wk2 price    966
2  Vehicle  Car  Wk1 units    100
3  Vehicle  Car  Wk2 units    120

Есть ли способ получить выходные данные в следующем формате?

      Name item   variable  Price   variable   Units  
0  Vehicle  Car  Wk1 price    978  Wk1 units     100
1  Vehicle  Car  Wk2 price    966  Wk2 units     120

1 Ответ

0 голосов
/ 26 мая 2018

Я попробовал

Шаг 1 - Создание фрейма данных

data = pd.DataFrame([{"Name":"Vehicle", "item":"Car", "Wk1 price":978, "Wk2 price":966, "Wk1 units":100, "Wk2 units":120}])

Шаг 2 - Слияние фрейма данных и разделение «Метрик» и «Значений»

data = data.melt(id_vars = ['Name', 'item'])
data["Week"] = [re.findall("[AaZz]*.*?(?=\s)",x)[0] for x in data["variable"]]
data["Metric"] = [re.findall("\s([AaZz]*.*)",x)[0] for x in data["variable"]]
data = data.drop(["variable"],axis=1)

Шаг 3 - Поворот фрейма данных

data.pivot_table(index=["Name","item","Week"], columns="Metric", values="value").reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...