Pandasで条件に合致する行だけ右詰めしたい場合
/ 1 min read
Table of Contents
はじめに
こういう表を、
| # | hoge | fuga | piyo |
|---|---|---|---|
| 1 | a | b | NaN |
| 2 | c | NaN | NaN |
| 3 | NaN | d | NaN |
| 4 | e | f | g |
こうしたい時の話。
| # | hoge | fuga | piyo |
|---|---|---|---|
| 1 | NaN | a | b |
| 2 | NaN | NaN | c |
| 3 | NaN | NaN | d |
| 4 | e | f | g |
方法
# piyo列のnullの合計が0になるまでループさせるwhile df.loc[:, 'piyo'].isnull().sum() > 0: # piyo列のnullとなっている行をshiftを使って一つ右にずらす df.mask(df.loc[:, 'piyo'].isnull() == True, df.shift(axis=1, inplace=True)mask()のオプション説明
axis=1で右に一つずらして、inplace=Trueで元の DataFrame に反映させる。