1. ホーム
  2. python

[解決済み] Pandasはgroupbyで合計を出すが、特定の列を除外する

2023-01-10 22:21:42

質問

Pandasのデータフレームでgroupbyを行うが、そのgroupbyからいくつかの列を除外する最善の方法は何ですか? 例えば、次のデータフレームがあります。

Code   Country      Item_Code   Item    Ele_Code    Unit    Y1961    Y1962   Y1963
2      Afghanistan  15          Wheat   5312        Ha      10       20      30
2      Afghanistan  25          Maize   5312        Ha      10       20      30
4      Angola       15          Wheat   7312        Ha      30       40      50
4      Angola       25          Maize   7312        Ha      30       40      50

国名とアイテムコードの列をgroupbyし、Y1961, Y1962, Y1963の列に該当する行の合計のみを計算したいです。結果のデータフレームは次のようになります。

Code   Country      Item_Code   Item    Ele_Code    Unit    Y1961    Y1962   Y1963
2      Afghanistan  15          C3      5312        Ha      20       40       60
4      Angola       25          C4      7312        Ha      60       80      100

今現在、私はこうしています。

df.groupby('Country').sum()

しかし、これはItem_Codeカラムの値も加算してしまいます。の中にどのカラムを含めるかを指定する方法はありますか? sum() 操作に含めるカラムと除外するカラムを指定する方法はありますか?

どのように解決するのですか?

groupbyのカラムを選択することができます。

In [11]: df.groupby(['Country', 'Item_Code'])[["Y1961", "Y1962", "Y1963"]].sum()
Out[11]:
                       Y1961  Y1962  Y1963
Country     Item_Code
Afghanistan 15            10     20     30
            25            10     20     30
Angola      15            30     40     50
            25            30     40     50

渡されたリストはカラムのサブセットでなければならないことに注意してください。そうでなければ、KeyErrorが表示されます。