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