如何将 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
所有 0
与 np.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
我一直在处理包含经纬度数据的大型数据集。 我正在对整个 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
所有 0
与 np.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