0

if I have a dataframe with some nan values, how can I shift only the rows with nan values on the 1st column by 1?

e.g.

import pandas as pd
import numpy as np
from numpy import nan


df = pd.DataFrame(np.array([[1, 2, 3, 7], [nan, 2, 3, 4], [nan, nan, 1, 9],[3, 8 , 2, 9],[nan, 4, 13, 2],[nan, 3, 4, 1],[nan, nan, 1, 3]]))
df    

gives

    0   1   2   3
0   1.0 2.0 3.0 7.0
1   NaN 2.0 3.0 4.0
2   NaN NaN 1.0 9.0
3   3.0 8.0 2.0 9.0
4   NaN 4.0 13.0 2.0
5   NaN 3.0 4.0 1.0
6   NaN NaN 1.0 3.0

how do I get

    0   1   2   3
0   1.0 2.0 3.0 7.0
1   2.0 3.0 4.0 NaN
2   NaN 1.0 9.0 NaN
3   3.0 8.0 2.0 9.0
4   4.0 13.0 2.0 NaN
5   3.0 4.0 1.0 NaN
6   NaN 1.0 3.0 NaN
tkf
  • 1
  • 3

0 Answers0