Python多列数据透视表问题:如何纳入Circuit列?
问题描述
我有一个包含Circuit、Time、Variable Max、Element列的DataFrame,需要将其重组为以Circuit和Time为行索引,Element的P、Q为列,对应显示Variable Max值的表格。之前的pivot_table代码未纳入Circuit列,求修改方案。
原代码:
# Leer el archivo CSV df = pd.read_csv(directorio_2022, sep=';') # Crear una tabla dinámica tabla_dinamica = df.pivot_table(index=df.columns[1], columns=df.columns[5], values=df.columns[7], aggfunc='sum') # Guardar la tabla dinámica en un archivo CSV tabla_dinamica.to_csv('tabla_dinamica.csv', sep=';') print("Tabla dinámica creada y guardada en 'tabla_dinamica.csv'.")
修改后的代码
# Leer el archivo CSV df = pd.read_csv(directorio_2022, sep=';') # 创建包含Circuit和Time的复合行索引的透视表 # 建议直接使用列名替代列索引,避免列顺序变动导致错误 tabla_dinamica = df.pivot_table( index=['Circuit', 'Time'], # 复合行索引:Circuit + Time columns='Element', # 列:Element的不同取值(P、Q) values='Variable Max', # 填充的值:Variable Max aggfunc='sum' # 聚合函数,保持原逻辑的sum ) # Guardar la tabla dinámica en un archivo CSV tabla_dinamica.to_csv('tabla_dinamica.csv', sep=';') print("Tabla dinámica creada y guardada en 'tabla_dinamica.csv'.")
关键修改点
- 将
index参数从单一列(仅Time)改为列表['Circuit', 'Time'],实现复合行索引,满足同时以Circuit和Time分组的需求。 - 替换原代码中用
df.columns[n]的方式为直接写列名,代码可读性更强,且后续CSV列顺序变动时不会出错。如果你的列名和实际CSV有出入,自行调整对应列名即可。
内容的提问来源于stack exchange,提问作者Jose L Gutierrez A
相关产品推荐
相关产品推荐

