Pandas 在双列索引上转置
Pandas transpose on double column index
我有一个如下所示的数据框
我想像下面这样改造它
它是双列索引转换,我不介意 price/quantity 或日期是第一级列索引。我认为日期是最重要的并且拆分为 price/quantity 但无法像这样创建 table here.Its 一个包含大约一百万行和一年中所有日期的数据框,所以你有任何对此最有效代码的想法?空单元格也可以是 0s
样本数据
CID
PROD_ID
价格
日期
数量
123
x
1
31-12-20
5
123
x
1
1-1-21
5
123
x
1
2-1-21
7
123
y
2
2-1-21
11
789
z
5
1-1-21
22
256
一个
4
1-1-21
9
324
b
4
1-1-21
16
789
z
5.5
2-1-21
22
324
一个
4.5
2-1-21
23
324
e
8
2-1-21
3
使用pandas.pivot_table
pd.pivot_table(
df,
values=['PRICE', 'QUANTITY'],
index=['CID', 'PROD_ID'],
columns=['DATE'],
aggfunc=sum
)
输出
PRICE QUANTITY
DATE 1-1-21 2-1-21 31-12-20 1-1-21 2-1-21 31-12-20
CID PROD_ID
123 x 1.0 1.0 1.0 5.0 7.0 5.0
y NaN 2.0 NaN NaN 11.0 NaN
256 a 4.0 NaN NaN 9.0 NaN NaN
324 a NaN 4.5 NaN NaN 23.0 NaN
b 4.0 NaN NaN 16.0 NaN NaN
e NaN 8.0 NaN NaN 3.0 NaN
789 z 5.0 5.5 NaN 22.0 22.0 NaN
我有一个如下所示的数据框
我想像下面这样改造它
它是双列索引转换,我不介意 price/quantity 或日期是第一级列索引。我认为日期是最重要的并且拆分为 price/quantity 但无法像这样创建 table here.Its 一个包含大约一百万行和一年中所有日期的数据框,所以你有任何对此最有效代码的想法?空单元格也可以是 0s
样本数据
CID | PROD_ID | 价格 | 日期 | 数量 |
---|---|---|---|---|
123 | x | 1 | 31-12-20 | 5 |
123 | x | 1 | 1-1-21 | 5 |
123 | x | 1 | 2-1-21 | 7 |
123 | y | 2 | 2-1-21 | 11 |
789 | z | 5 | 1-1-21 | 22 |
256 | 一个 | 4 | 1-1-21 | 9 |
324 | b | 4 | 1-1-21 | 16 |
789 | z | 5.5 | 2-1-21 | 22 |
324 | 一个 | 4.5 | 2-1-21 | 23 |
324 | e | 8 | 2-1-21 | 3 |
使用pandas.pivot_table
pd.pivot_table(
df,
values=['PRICE', 'QUANTITY'],
index=['CID', 'PROD_ID'],
columns=['DATE'],
aggfunc=sum
)
输出
PRICE QUANTITY
DATE 1-1-21 2-1-21 31-12-20 1-1-21 2-1-21 31-12-20
CID PROD_ID
123 x 1.0 1.0 1.0 5.0 7.0 5.0
y NaN 2.0 NaN NaN 11.0 NaN
256 a 4.0 NaN NaN 9.0 NaN NaN
324 a NaN 4.5 NaN NaN 23.0 NaN
b 4.0 NaN NaN 16.0 NaN NaN
e NaN 8.0 NaN NaN 3.0 NaN
789 z 5.0 5.5 NaN 22.0 22.0 NaN