70129


Pandasのデータフレームで、軸を指定して転置する方法がありましたらご教示いただけませんでしょうか？

具体的には、下記データフレーム（「ID」「year」別に「金額」「個数」を集計したもの）を、

[code]

    df = pd.DataFrame({'id': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                       'year': ['2018', '2019', '2020', '2018', '2019', '2020', '2018', '2019', '2020'],
                       '金額': [3000, 4500, 2000, 1500, 4000, 2500, 1000, 5000, 3500],
                       '個数': [2, 3, 1, 1, 2, 2, 1, 5, 3]})
    
[/code]

下記のように、「id」ごとに 1行のデータフレームに転置したいです。  
（「id」ごとに、「year」を軸に、「金額」「個数」を転置するイメージ）

[code]

    df2 = pd.DataFrame({'id': ['A', 'B', 'C'],
                        '2018_金額': [3000, 1500, 1000],
                        '2019_金額': [4500, 4000, 5000],
                        '2020_金額': [2000, 2500, 3500],
                        '2018_個数': [2, 1, 1],
                        '2019_個数': [3, 2, 5],
                        '2020_個数': [1, 2, 3]})
    
[/code]


CC BY-SA 4.0
2020-09-04T03:53:11.807
70123
2020-09-04T07:02:25.833
2020-09-04T04:05:48.633
2238
41758
question
python pandas
データフレームの転置方法


こちらのページ等を参考に、以下のようにしてみました。  
[pandas.DataFrame.pivot](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.pivot.html)  
[Reshaping and pivot
tables](https://pandas.pydata.org/docs/user_guide/reshaping.html)  
[MultiIndex / advanced indexing](https://pandas.pydata.org/pandas-
docs/stable/user_guide/advanced.html)  
[pandas.DataFrame.reset_index](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.reset_index.html)

[code]

    df2 = df.pivot(index='id', columns='year', values=['金額','個数'])
    
    newcolumns = []
    for i in range(len(df2.columns)):
        newcolumns.append(df2.columns[i][1] + '_' + df2.columns[i][0])
    
    df2.columns = newcolumns
    df2.reset_index(inplace=True)
    
[/code]


CC BY-SA 4.0
2020-09-04T07:02:25.833
70129
2020-09-04T07:02:25.833
26370
70123
answer