pandasのshift関数の使い方
概要
- レコードをずらす操作
- ずらして参照されない値は
NaTやnullが入る- 値の補完には
bfill,ffill関数が使えるbfillは後方の有効な値を探して補完ffillは前方の有効な値を探して補完
- 値の補完には
具体例
df = pd.DataFrame(dict(
A=["a", "b", "c"],
B=[1, 2, 3]
))
df["B+1"] = df["B"].shift(+1).bfill()
display(df)
| index | A | B | B+1 |
|---|---|---|---|
| 0 | a | 1 | 1.0 |
| 1 | b | 2 | 1.0 |
| 2 | c | 3 | 2.0 |
groupbyと組み合わせて使用する
df = pd.DataFrame(dict(
A=["a", "a", "a", "b", "b", "b", "c", "c", "c"],
B=[1, 2, 3, 11, 12, 13, 21, 22, 23]
))
df["B_A_shift"] = df.groupby("A")["B"].shift(+1).bfill()
display(df)
| index | A | B | B_A_shift |
|---|---|---|---|
| 0 | a | 1 | 1.0 |
| 1 | a | 2 | 1.0 |
| 2 | a | 3 | 2.0 |
| 3 | b | 11 | 11.0 |
| 4 | b | 12 | 11.0 |
| 5 | b | 13 | 12.0 |
| 6 | c | 21 | 21.0 |
| 7 | c | 22 | 21.0 |
| 8 | c | 23 | 22.0 |