【Pandas】ある条件の列名の列を足し合わせる
業務で書いた。いろいろググったのでメモ。
要件
以下のようなテーブルがあったときに、2018年6月の合計を計算したい、つまり"201806"から始まる列の値を足し合わせたい。
user id | 20180601 | 20180602 | 20180603 | 20180604 | … | 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)
- 列を足し合わせる