我有4个国家的每日温度如下:
日
国标
我们
非盟
认证机构
1
33
2
32
3
23
4
34
5
23
34
6
45
34
7
34
23
8
34
33
9
34
45
44
12
10
23
23
23
23
11
34
23
45
12
12
23
44
13
34
66
53
14
34
34
33
15
43
34
22
16
45
56
34
17
34
32
18
22
12
19
12
20
12
我正在尝试创建一个函数,该函数将返回任何给定日期左侧最接近的值加上偏移量。换句话说,如果您要为每一行(其中 offset=0
)从左到右绘制一条假设的水平线,那么返回的值应该是第一个遇到的值。即 offset=1
将只返回第二个交叉点,和 offset=2
将返回第三个,依此类推。
def nearest(offset=0):
#return df
例如:nearest(0)
将输出:日
温度
1
33
2
32
3
23
4
34
5
23
6
45
7
34
8
34
9
34
10
23
11
34
12
12
13
34
14
34
15
43
16
45
17
34
18
22
19
34
20
12
和
nearest(1)
:日
温度
1
2
3
4
5
34
6
34
7
23
8
33
9
45
10
23
11
23
12
23
13
66
14
34
15
34
16
56
17
32
18
12
19
20
现实情况是,我有大约 10 个国家,它们都像上面的第一个表一样交错排列,抵消值可能高达 9!
任何建议表示赞赏。
最佳答案
我假设空单元格是 NaN
s:
def nearest(df, offset=0):
x = df.loc[:, "GB":].apply(lambda x: sorted(x, key=pd.isna)[offset], axis=1)
return x
print(nearest(df, 1))
打印:0 NaN
1 NaN
2 NaN
3 NaN
4 34.0
5 34.0
6 23.0
7 33.0
8 45.0
9 23.0
10 23.0
11 23.0
12 66.0
13 34.0
14 34.0
15 56.0
16 32.0
17 12.0
18 NaN
19 NaN
dtype: float64
关于python - 获取 Pandas 列左侧最近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68068102/