pandas 我正在尝试将布局数据从这个更改为那个布局

6l7fqoea  于 2023-04-04  发布在  其他
关注(0)|答案(1)|浏览(111)

我尝试在pandas中更改此布局的数据布局:
| 材料|分类|001.2023|002.2023|
| --------------|--------------|--------------|--------------|
| 小行星6001|价格|十六岁|四十七|
| 小行星6002|价格|五十|四十一|
| 六零零三|价格|三|五|
| 小行星6001|折扣|三十五|四十七|
| 小行星6002|折扣|四十一|三十三|
| 六零零三|折扣|七|二十七|
| 小行星6001|数量|三十四|四十一|
| 小行星6002|数量|五|十五岁|
| 六零零三|数量|七|五十|
到这个布局:
| 材料|日期|价格|折扣|数量|
| --------------|--------------|--------------|--------------|--------------|
| 小行星6001|001.2023|十六岁|三十五|三十四|
| 小行星6002|001.2023|五十|四十一|五|
| 六零零三|001.2023|三|七|七|
| 小行星6001|002.2023|四十七|四十七|四十一|
| 小行星6002|002.2023|四十一|三十三|十五岁|
| 六零零三|002.2023|五|二十七|五十|
我尝试使用函数stackwide * to * long,但它们都不能正常工作。

ar7v8xwq

ar7v8xwq1#

试试这个:

result = (df.set_index(['Material', 'Category'])
          .rename_axis(columns='Date')
          .stack()
          .unstack(level=1)
          .reset_index()
          .sort_values(['Date', 'Material'])
          .rename_axis(columns=None)
          )
print(result)

>>>
   Material      Date  Discounts  Price  Quantity
0      6001  001.2023         35     16        34
2      6002  001.2023         41     50         5
4      6003  001.2023          7      3         7
1      6001  002.2023         47     47        41
3      6002  002.2023         33     41        15
5      6003  002.2023         27      5        50

相关问题