Python 如何使用stack/melt重塑多索引数据帧
*我正在编辑这篇文章,希望能让它更清楚。我试图利用stack和melt的组合将这个示例数据帧转换为下面所需的输出 使用pandas,我将其加载到下面的excel表格中,最终目标是使其整洁且长Python 如何使用stack/melt重塑多索引数据帧,python,pandas,multi-index,Python,Pandas,Multi Index,*我正在编辑这篇文章,希望能让它更清楚。我试图利用stack和melt的组合将这个示例数据帧转换为下面所需的输出 使用pandas,我将其加载到下面的excel表格中,最终目标是使其整洁且长 df=pd.read('myfile.xlsx) df1= df.stack(level=1) df2=df1.melt(col_level =1) 示例数据帧 良好的客户服务 新鲜食材 很多座位 约翰爸爸 段平均值 约翰爸爸 段平均值 约翰爸爸 段平均值 12/1/2019 70 88 12
df=pd.read('myfile.xlsx)
df1= df.stack(level=1)
df2=df1.melt(col_level =1)
示例数据帧
良好的客户服务
新鲜食材
很多座位
约翰爸爸
段平均值
约翰爸爸
段平均值
约翰爸爸
段平均值
12/1/2019
70
88
12/1/2019
2.2
5.5
12/1/2019
5.2
8.8
12/2/2019
50
78
12/2/2019
6.8
4.4
12/2/2019
5.3
7.8
12/3/2019
60
77
12/3/2019
8.9
2.3
12/3/2019
6.3
5.6
12/4/2019
30
76
12/4/2019
7.3
7.3
12/4/2019
7.9
4.6
假设以下是excel文件的外观: 以下是我将如何使用Pandas实现的步骤:
for循环熔化并连接DF
#步骤1
df=pd.read\u excel(“raw\u data.xlsx”,skiprows=2,header=None)
df.dropna(轴=1,在位=真)
#步骤2(a):创建多索引列名
col_name=np.array(['date','Papa Johns','Segment Avg'])
类别=[“良好的客户服务”、“新鲜的原料”、“大量的座位”]
外部=[范围(3)内的类别中的猫的猫]
内部=[col for u in range(3)中的col for u name中的col]
#步骤2(b):将DF更改为多索引
df.columns=[外部,内部]
打印(df)
良好的客户服务新鲜原料\
日期Papa Johns段平均日期Papa Johns
0 2019-01-12 70 88 2019-01-12 2.2
1 2019-02-12 50 78 2019-02-12 6.8
2 2019-03-12 60 77 2019-03-12 8.9
3 2019-04-12 30 76 2019-04-12 7.3
很多座位
段平均日期Papa Johns段平均
0 5.5 2019-01-12 5.2 8.8
1 4.4 2019-02-12 5.3 7.8
2 2.3 2019-03-12 6.3 5.6
3 7.3 2019-04-12 7.9 4.6
#步骤3
final_df=pd.DataFrame(列=['date','question','restaurant','score'])#空df
对于类别中的cat:
温度df=df.melt(id变量=[(类别,“日期”)],
value_vars=[(猫叫“Papa Johns”)])
temp_df.columns=[“日期”、“问题”、“餐厅”、“分数”]
最终密度=局部混凝土([最终密度,温度密度])
打印(最终版)
日期问题餐厅分数
0 2019-01-12良好的客户服务Papa Johns 70
1 2019-02-12良好的客户服务Papa Johns 50
2 2019-03-12良好的客户服务Papa Johns 60
3 2019-04-12良好的客户服务Papa Johns 30
0 2019-01-12新鲜配料Papa Johns 2.2
1 2019-02-12新鲜配料Papa Johns 6.8
2 2019-03-12新鲜配料Papa Johns 8.9
3 2019-04-12新鲜配料Papa Johns 7.3
0 2019-01-12很多座位,爸爸约翰5.2
1 2019-02-12一批座位Papa Johns 5.3
2 2019-03-12大量座位Papa Johns 6.3
3 2019-04-12大量座位Papa Johns 7.9
您能提供创建示例的代码吗?不幸的是,我不能提供,但表格的显示方式与此完全相同。谢谢你基于我的问题,你的回答是正确的,我会给它打上标记,所以我很感激。我应该提供一个更大的样本,因为他们大约有30家不同的餐厅(Papajohns、Applebee’s等)——所以这有点复杂,但我认为我可以从这里构建出来。谢谢