我有两个Pandas系列:
对于
例如,对于
这是我目前的解决方案。我想知道是否有更好(更快、可能是pandas函数?)的方法来获得相同的结果:
s1
可能有大量的行数和一些NaN
,而s2
是一个数据框(df
)中仅有20行的一列。
这两个系列的索引不同。s1:
id
1 4.5
2 15.0
3 13.0
4 14.0
5 18.0
6 15.0
7 13.0
8 14.0
9 NaN
10 NaN
11 NaN
12 18.0
13 NaN
14 NaN
15 NaN
df:
col1 s2
0 20.0 0.0
1 19.0 4.5
2 18.0 5.0
3 17.0 6.0
4 16.0 7.0
5 15.0 8.0
6 14.0 9.0
7 13.0 10.0
8 12.0 11.0
9 11.0 12.0
10 10.0 13.0
11 9.0 15.0
12 8.0 16.0
13 7.0 18.0
14 6.0 20.0
15 5.0 22.0
16 4.0 24.0
17 3.0 26.0
18 2.0 28.0
19 1.0 100.0
对于
s1
中的每个 id
,我想要检索第一个小于或等于 id
的 s2
元素中 col1
的值。例如,对于
id 1
,我们有 s1 = 4.5
,它小于或等于 df.s2 = 4.5
,因此我想要检索值为19
。
同样地,对于在 s1
中的 id=2
,我需要检索 df.col1
中的值9
。这是我目前的解决方案。我想知道是否有更好(更快、可能是pandas函数?)的方法来获得相同的结果:
output = [min(df[df['s2'].le(element)].col1, default = np.NaN) for element in s1]
[19.0,
9.0,
10.0,
10.0,
7.0,
9.0,
10.0,
10.0,
nan,
nan,
nan,
7.0,
nan,
nan,
nan]