如何将 pandas 列(之前为零)中的值填充为下一行中的适当 integer/float 值?

How to fill values in pandas column (which was zero before) to a proper integer/float values from the next coming rows?

我一直在处理包含经纬度数据的大型数据集。 我正在对整个 df 进行插值,所以在此之前我只希望我的纬度和经度列中的元素填充不带零的值。

我的Dataframe(说明目的):

Time  lat  long
0  0  0
1  0  0
2  0  0
3  0  0
4  0  0
5  0  0
6  0  0
7  5  2
8  5  2
9  0  0
10  0  0
11  0  0
12  0  0
13  6  1
14  6  1

我的要求:

    Time  lat  long
    0  5  2
    1  5  2
    2  5  2
    3  5  2
    4  5       2
    5  5  2
    6  5  2
    7  5  2
    8  5  2
    9  6  1
    10  6  1
    11  6  1
    12  6  1
    13  6  1
    14  6  1

我需要什么

我希望你从实际的df和我的要求中理解。

我只想取下一个具有非零值的最后一个元素,并将该元素填充到该列的前几行中。

请求

我相信会有一些好的方法来完成我的工作..

您可以 replace 所有 0np.nan 并使用 bfill 为它们填充下一个有效值:

df.loc[:,'Time':].replace(0,np.nan).bfill()

Time  lat  long
0    1.0  5.0   2.0
1    1.0  5.0   2.0
2    2.0  5.0   2.0
3    3.0  5.0   2.0
4    4.0  5.0   2.0
5    5.0  5.0   2.0
6    6.0  5.0   2.0
7    7.0  5.0   2.0
8    8.0  5.0   2.0
9    9.0  6.0   1.0
10  10.0  6.0   1.0
11  11.0  6.0   1.0
12  12.0  6.0   1.0
13  13.0  6.0   1.0
14  14.0  6.0   1.0