Brand Family Brand Channel Product Date Dollars Quantity
0 Brand A Brand A Reg A1 2022-01-12 216 18
1 Brand A Brand A Reg A1 2022-01-13 164 47
2 Brand A Brand A Reg A1 2022-01-14 492 41
3 Brand A Brand A Reg A2 2022-01-12 108 9
4 Brand A Brand A Reg A2 2022-01-13 276 23
5 Brand A Brand A Reg A2 2022-01-14 240 20
6 Brand A Brand A Reg A3 2022-01-12 392 28
7 Brand A Brand A Reg A3 2022-01-13 1120 80
8 Brand A Brand A Reg A3 2022-01-14 1148 82
9 Brand A Brand A Reg A4 2022-01-12 0 0
10 Brand A Brand A Reg A4 2022-01-13 0 0
11 Brand A Brand A Reg A4 2022-01-14 0 0
12 Brand A Brand A Reg A5 2022-01-12 98 7
13 Brand A Brand A Reg A5 2022-01-13 210 15
14 Brand A Brand A Reg A5 2022-01-14 182 13
>>> (df.melt(var_name=['Variable', 'Date'], value_name='Value', ignore_index=False)
.pivot_table(index=df.index.names+['Date'], columns='Variable', values='Value')
.reset_index().rename_axis(columns=None))
Brand Family Brand Channel Product Date Dollars Quantity
0 A A Reg A1 2022-01-12 4 1
1 A A Reg A1 2022-01-13 5 2
2 A A Reg A1 2022-01-14 6 3
3 A A Reg A2 2022-01-12 14 11
4 A A Reg A2 2022-01-13 15 12
5 A A Reg A2 2022-01-14 16 13
df1 = pd.read_csv('path/file.csv', header=[0, 1], index_col=[0,1,2,3])
df1.stack().reset_index()
Brand Family Brand Channel Product Date Quantity Dollars
0 A A Reg A1 2022-01-12 1 4
1 A A Reg A1 2022-01-13 2 5
2 A A Reg A1 2022-01-14 3 6
3 A A Reg A2 2022-01-12 11 14
4 A A Reg A2 2022-01-13 12 15
5 A A Reg A2 2022-01-14 13 16
3条答案
按热度按时间sg2wtvxw1#
我只是假设您的CSV文件与我代码中内联的文件类似。
溶液
首先,读取文件并忽略标头。
我们把它分成两部分,左边的部分
和右边的部分。
一个三个三个一个
现在转动右边的部分
注意索引和左边的一致。
最后,通过公共索引将它们连接起来。
pgvzfuti2#
您必须混合使用
melt
来扁平化 Dataframe ,然后混合使用pivot_table
来根据预期输出重塑 Dataframe :输入:
b5buobof3#
您还可以使用:
其中
df1
是您的数据