Pythonと!

プログラミングド素人の勉強日記です。

【Pandas】条件に合致する行だけ右詰めしたい場合

こういう表を、

# 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の場合に右に詰める。(空行はないという前提)

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