python的数据透视表分组怎么自定义索引列,自定义时间
时间: 2023-11-27 12:50:07 浏览: 71
在 Pandas 中使用 `pivot_table` 函数可以创建数据透视表。它可以对数据进行分组、聚合和透视,生成一个新的表格,以便更好地理解数据。如果你想要自定义索引列和时间,可以使用 Pandas 中的时间序列函数将时间列转换为时间索引,并使用 `reset_index` 函数来自定义索引列。
假设有以下数据集:
```
import pandas as pd
df = pd.DataFrame({
'日期': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'],
'城市': ['北京', '上海', '广州', '北京', '上海', '广州', '北京', '上海', '广州', '北京'],
'销售额': [100, 200, 150, 300, 250, 180, 280, 210, 190, 320]
})
```
首先需要将日期列转换为时间索引,可以使用 `pd.to_datetime` 函数:
```
df['日期'] = pd.to_datetime(df['日期'])
df.set_index('日期', inplace=True)
```
接下来,使用 `pivot_table` 函数创建数据透视表,并自定义索引列和时间:
```
table = pd.pivot_table(df, index=['城市', pd.Grouper(freq='M', level='日期')], values='销售额', aggfunc='sum')
table.reset_index(level=[0,1], inplace=True)
table.rename(columns={'日期': '月份'}, inplace=True)
```
解释一下这段代码:
- `pd.Grouper(freq='M', level='日期')` 表示按月份分组,level 参数表示时间列的名称
- `table.reset_index(level=[0,1], inplace=True)` 表示将城市和月份作为索引列,可以自定义其他列作为索引列
- `table.rename(columns={'日期': '月份'}, inplace=True)` 表示将日期列的名称改为月份
最后输出结果:
```
print(table)
```
```
城市 月份 销售额
0 上海 2022-01-31 660
1 北京 2022-01-31 980
2 广州 2022-01-31 520
```
可以看到,数据透视表已经按照城市和时间进行了分组,并且自定义了索引列和时间。
阅读全文