1. 行/列转换(Pivot)
pivot
方法用于将数据从长格式转换为宽格式,即行转列。
示例代码
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'城市': ['北京', '上海', '北京', '上海'],
'温度': [3, 5, 4, 6]
})
# 行转列
pivot_df = df.pivot(index='日期', columns='城市', values='温度')
print(pivot_df)
输出:
城市 上海 北京
日期
2023-01-01 5 3
2023-01-02 6 4
2. 透视表(Pivot Table)
pivot_table
方法类似于 pivot
,但更灵活,可以进行聚合操作。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'城市': ['北京', '上海', '北京', '上海'],
'温度': [3, 5, 4, 6]
})
# 创建透视表
pivot_table_df = df.pivot_table(index='日期', columns='城市', values='温度', aggfunc='mean')
print(pivot_table_df)
输出:
城市 上海 北京
日期
2023-01-01 5 3
2023-01-02 6 4
3. 堆叠(Stack)
stack
方法用于将列索引转换为行索引,即将宽格式数据转换为长格式数据。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'日期': ['2023-01-01', '2023-01-02'],
'北京': [3, 4],
'上海': [5, 6]
})
# 堆叠
stacked_df = df.set_index('日期').stack().reset_index()
stacked_df.columns = ['日期', '城市', '温度']
print(stacked_df)
输出:
日期 城市 温度
0 2023-01-01 北京 3
1 2023-01-01 上海 5
2 2023-01-02 北京 4
3 2023-01-02 上海 6
4. 取消堆叠(Unstack)
unstack
方法用于将行索引转换为列索引,即将长格式数据转换为宽格式数据。
示例代码
# 创建示例 DataFrame
df = pd.DataFrame({
'日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'城市': ['北京', '上海', '北京', '上海'],
'温度': [3, 5, 4, 6]
})
# 设置多重索引
multi_index_df = df.set_index(['日期', '城市'])
# 取消堆叠
unstacked_df = multi_index_df.unstack('城市')
print(unstacked_df)
输出:
温度
城市 上海 北京
日期
2023-01-01 5 3
2023-01-02 6 4