python - 获取 Pandas 列左侧最近的值

标签 python pandas dataframe

我有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/

相关文章:

c++ - 麻烦析构函数,在boost.python中用指针调用python的对象

__import__ 和 import as 之间的 Python 区别

python - 数据帧单元格被锁定并用于运行余额计算,条件是同一行上另一个单元格的结果

r - 将多行文本转换为数据框

R:为满足两个条件的某些数据设置一个值

Python 列表频率

python - 如何在不查询的情况下获取最受欢迎的推文?

python - 将 IP 排序为数字八位字节集(__not__ 字典顺序)

python - 将列从一个数据帧添加到另一个数据帧,以获取重叠列中存在的值

python - 如何对数据框中的 groupby 行应用计算并将结果 append 到数据框的底部?