u++の備忘録

【Pandas】ある条件の列名の列を足し合わせる

業務で書いた。いろいろググったのでメモ。

要件

以下のようなテーブルがあったときに、2018年6月の合計を計算したい、つまり"201806"から始まる列の値を足し合わせたい。

user id 20180601 20180601 20180601 20180601 20180807
aaaaa 0 500 0 500 1000
aaaab 10 500 0 500 1000
aaaac 0 200 300 100 400

実装

df['201806'] = df.iloc[:,df.columns.str.startswith('201806')].sum(axis=1)

df.columns.str.startswith('201806')

  • df.columns で列名の一覧を出す
  • .str.startswith('201806') で、それぞれの列名が'201806'で始まるか否かを判定

df.iloc

  • 行や列を指定して取り出す

.sum(axis=1)

  • 列を足し合わせる