如何将 pandas 数据框行转换为列
how to convert pandas data frame rows into columns
我有这样的数据框
df.to_dict('list')
输出:
{'ChannelPartnerID': [10000,
10000,
10000,
10000,
10000,
10001,
10001,
10001,
10002,
10002],
'Brand': ['B1', 'B2', 'B3', 'B4', 'B5', 'B1', 'B2', 'B5', 'B1', 'B4'],
'Sales': [29630, 38573, 1530, 21793, 7155, 26477, 42158, 14612, 6649, 6468]}
.
df
输出:
ChannelPartnerID Brand Sales
0 10000 B1 29630
1 10000 B2 38573
2 10000 B3 1530
3 10000 B4 21793
4 10000 B5 7155
5 10001 B1 26477
6 10001 B2 42158
7 10001 B5 14612
8 10002 B1 6649
9 10002 B4 6468
我想按 'ChannelPartnerID' 对数据进行分组,因为我想按 'ChannelPartnerID' 中唯一值中的唯一值合并数据,并将 'Brand' 列值转换为包含销售价格的列每列
我希望它是这样的
输出:
ChannelPartnerID B1_Sales B2_Sales B3_Sales B4_Sales B5_Sales B6_Sales B7_Sales
0 10000 29630 38573 1530 21793 7155 0 0
1 10001 26477 42158 0 0 14612 0 0
2 10002 6649 0 0 6468 0 0 0
你想要的是一个叫做pivot
:
df.pivot(*df).fillna(0).add_suffix('_Sales')
输出:
Brand B1_Sales B2_Sales B3_Sales B4_Sales B5_Sales
ChannelPartnerID
10000 29630 38573 1530 21793 7155
10001 26477 42158 0 0 14612
10002 6649 0 0 6468 0
注意。 df.pivot(*df)
是 df.pivot(index='ChannelPartnerID', columns='Brand', values='Sales')
的快捷方式
我有这样的数据框
df.to_dict('list')
输出:
{'ChannelPartnerID': [10000,
10000,
10000,
10000,
10000,
10001,
10001,
10001,
10002,
10002],
'Brand': ['B1', 'B2', 'B3', 'B4', 'B5', 'B1', 'B2', 'B5', 'B1', 'B4'],
'Sales': [29630, 38573, 1530, 21793, 7155, 26477, 42158, 14612, 6649, 6468]}
.
df
输出:
ChannelPartnerID Brand Sales
0 10000 B1 29630
1 10000 B2 38573
2 10000 B3 1530
3 10000 B4 21793
4 10000 B5 7155
5 10001 B1 26477
6 10001 B2 42158
7 10001 B5 14612
8 10002 B1 6649
9 10002 B4 6468
我想按 'ChannelPartnerID' 对数据进行分组,因为我想按 'ChannelPartnerID' 中唯一值中的唯一值合并数据,并将 'Brand' 列值转换为包含销售价格的列每列
我希望它是这样的 输出:
ChannelPartnerID B1_Sales B2_Sales B3_Sales B4_Sales B5_Sales B6_Sales B7_Sales
0 10000 29630 38573 1530 21793 7155 0 0
1 10001 26477 42158 0 0 14612 0 0
2 10002 6649 0 0 6468 0 0 0
你想要的是一个叫做pivot
:
df.pivot(*df).fillna(0).add_suffix('_Sales')
输出:
Brand B1_Sales B2_Sales B3_Sales B4_Sales B5_Sales
ChannelPartnerID
10000 29630 38573 1530 21793 7155
10001 26477 42158 0 0 14612
10002 6649 0 0 6468 0
注意。 df.pivot(*df)
是 df.pivot(index='ChannelPartnerID', columns='Brand', values='Sales')