使用pivot_表拆分列

2024-10-01 15:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要什么函数在Python中将行拆分或取消堆叠为列?我需要我的数据来自以下方面:

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')

这将创建一个只有两列(分子和分母)的表,然后是一些索引。请帮忙


Tags: columns数据函数datarawvaluetype中将
1条回答
网友
1楼 · 发布于 2024-10-01 15:39:17

你可以做:

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

相关问题 更多 >

    热门问题