pandas Python中流畅的透视和Map

9nvpjoqh  于 2022-11-05  发布在  Python
关注(0)|答案(1)|浏览(108)

我希望从类型值创建列标题。然后在新形成的标题下Map适当的en值。

数据

country start       type    en
US      8/1/2022    bb      10  
Japan   8/1/2022    aa      25  
Japan   9/1/2022    cc      1

所需

country start       aa  bb  cc
US      8/1/2022    0   10  0
Japan   8/1/2022    25  0   0
Japan   9/1/2022    1   0   0

"正在做"


# pip install pyjanitor

import pandas as pd
import janitor

df.pivot(
    index = 'type', 
    names_to = ('start', '.value'), 
    names_pattern = r"(Q\d+)_?(.+)",
    sort_by_appearance = True)

如有任何建议,敬请谅解

ac1kyiln

ac1kyiln1#

请尝试:

df.pivot(index=['country', 'start'], columns='type', values='en').fillna(0, downcast='int').reset_index()

谢谢,@萨米温米。

输出量:

type country     start  aa  bb  cc
0      Japan  8/1/2022  25   0   0
1      Japan  9/1/2022   0   0   1
2         US  8/1/2022   0  10   0

或者,

df.groupby(['country', 'start', 'type'])['en'].sum().unstack().fillna(0).astype(int).reset_index()

相关问题