skip to content
barorin&

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 に反映させる。