如何对带双层列头的Pandas DataFrame进行透视转换
场景1:国家+性别双层列头转指定长表
你已经完成了数据读取和列名修正,直接执行以下代码即可得到目标结构:
# 将Age列设为索引,堆叠两层列头到行维度 result = df.set_index('Age').stack([0, 1], future_stack=True).reset_index() # 重命名列满足要求 result.columns = ['Age', 'Country', 'Gender', 'frequency'] # 若不需要total维度,可加过滤条件: # result = result[result['Gender'] != 'total']
其中stack([0,1])表示把多层列的第一层(国家)、第二层(性别)依次转成行维度的列。
场景2:带固定列的性别+年龄双层列头转指定长表
首先读取该数据:
df2 = pd.read_csv('你的第二个csv文件路径.csv', delimiter=";", header=[0, 1])
执行转换代码:
# 将三个固定列设为索引(固定列的双层列名完全一致,直接传元组指定即可) result2 = df2.set_index([('Code', 'Code'), ('Country', 'Country'), ('Procedure', 'Procedure')]) # 堆叠两层列头(第一层为性别,第二层为年龄) result2 = result2.stack([0, 1], future_stack=True).reset_index() # 重命名列 result2.columns = ['Code', 'Country', 'Procedure', 'Gender', 'Age', 'Frequency']
内容的提问来源于stack exchange,提问作者dublin123
相关产品推荐
相关产品推荐

