我有4个国家的每日气温如下:
Day |
GB |
US |
AU |
CA |
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)
将输出:
Day |
Temp |
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 |
and nearest(1)
:
Day |
Temp |
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))
Prints:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)