Python 熊猫将不同类型的多行转换为一行,每种类型有多个列

Python 熊猫将不同类型的多行转换为一行,每种类型有多个列,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,给定以下df Account contract_date type item_id quantity price tax net_amount ABC123 2020-06-17 P 1409 1000 0.355 10 400 ABC123 2020-06-17 S 1409 2000 0.053 15 150 ABC123 2020-06-17 C 1409 500 0.25 5 180 ABC1

给定以下
df

Account contract_date   type    item_id quantity    price   tax net_amount
ABC123  2020-06-17  P   1409    1000    0.355   10  400
ABC123  2020-06-17  S   1409    2000    0.053   15  150
ABC123  2020-06-17  C   1409    500 0.25    5   180
ABC123  2020-06-17  S   1370    5000    0.17    30  900
DEF456  2020-06-18  P   7214    3000    0.1793  20  600
我想将
df
,按帐户、合同日期和项目id分组。然后将不同类型的值拆分为不同的列。预期结果如下。我可以用for loop/apply来实现这一点,但我想寻求groupby或pivot或任何向量化/pythonic解决方案的建议。预期结果如下:

Account contract_date   item_id quantity_P  quantity_S  quantity_C  price_P price_S price_C tax_P tax_S tax_C   net_amount_P    net_amount_S    net_amount_C
ABC123  2020-06-17  1409    1000    2000    500 0.355   0.053   0.25    10  15  5   400 150 180
ABC123  2020-06-17  1370    0   5000    0   0   0.17    0   0   30  0   0   900 0
DEF456  2020-06-18  7214    3000    0   0   0.1793  0   0   20  0   0   600 0   0
*虽然它看起来有点不适合对齐,但您可以复制
df
并使用
df=pd.read_clipboard()
读取表格。谢谢你的帮助。多谢各位

编辑:我使用
df.pivot(索引=['Account','contract\u date','item\u id',columns=['type'])得到的错误。

已解决:错误源于pandas的版本,它是pandas 1.0.1,正如@MayankPorwal所建议的,升级到1.1.x后,它现在工作正常

谢谢。

使用:


我的熊猫版本是
1.1.0
。你能试着升级到那个版本吗?@MayankPorwal嗨,升级熊猫版本后,它现在可以正常工作了。谢谢,太好了!!很乐意帮忙。
In [1660]: df.pivot(index=['Account', 'contract_date', 'item_id'], columns=['type'])
Out[1660]: 
                              quantity                 price                 tax             net_amount              
type                                 C       P       S     C       P      S    C     P     S          C      P      S
Account contract_date item_id                                                                                        
ABC123  2020-06-17    1370         NaN     NaN  5000.0   NaN     NaN  0.170  NaN   NaN  30.0        NaN    NaN  900.0
                      1409       500.0  1000.0  2000.0  0.25  0.3550  0.053  5.0  10.0  15.0      180.0  400.0  150.0
DEF456  2020-06-18    7214         NaN  3000.0     NaN   NaN  0.1793    NaN  NaN  20.0   NaN        NaN  600.0    NaN