Разделение столбцов с помощью pivot_table - PullRequest
0 голосов
/ 21 января 2020

Какая функция мне нужна, чтобы разбивать или разбивать строки на столбцы в Python, пожалуйста? Мне нужны мои данные для go из этого:

AreaCode | Type        | Disag    | Value 
101      | Numerator   | Total    | 10
101      | Denominator | Total    | 20
102      | Numerator   | Total    | 55
102      | Denominator | Total    | 65

в эту таблицу из 4 столбцов:

AreaCode | Disag | Denominator | Numerator  
101      | Total | 10          | 20
102      | Total | 55          | 65

Это код для импорта первой таблицы:

import pandas as pd

raw_data = {'AreaCode' : ['101', '101', '102', '102'],
            'Type' : ['Numerator', 'Denominator', 'Numerator', 'Denominator'],
            'Disag' : ['Total', 'Total', 'Total', 'Total'],
            'Value' : [10, 20, 55, 65]}

Data = pd.DataFrame(raw_data, columns = ['AreaCode', 'Type', 'Disag', 'Value'])

Как мне сделать так, как я хочу, пожалуйста? Пока все, что я могу придумать, это:

Data = Data.pivot_table(values = 'Value',
                        index = ['AreaCode', 'Disag'],
                        columns = 'Type')

, которая создает таблицу только с двумя столбцами (Числитель и Знаменатель), а затем с некоторыми индексами. Пожалуйста, помогите!

1 Ответ

0 голосов
/ 21 января 2020

Вы можете сделать:

Data = Data.pivot_table(index='AreaCode', columns=['Type', 'Disag']).stack(level='Disag')
Data.columns = Data.columns.get_level_values(1)
print(Data.reset_index())

Для печати:

Type AreaCode  Disag  Denominator  Numerator
0         101  Total           20         10
1         102  Total           65         55

РЕДАКТИРОВАТЬ: Чтобы сохранить в CSV, вы можете сделать:

Data = Data.pivot_table(index='AreaCode', columns=['Type', 'Disag']).stack(level='Disag')
Data.columns = Data.columns.get_level_values(1)
Data = Data.reset_index()

Data.to_csv('data.csv', index=False)  # <-- save it to CSV

Это сохранит в CSV следующим образом:

enter image description here

...