将列与列表中的值进行比较并返回较高的下限值

2024-09-29 20:17:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,未排序,但包含uniques值。下面的一个只是一个例子

lst = [1,3,4,6]

以及熊猫栏,如下所示:

A
3
4

我还需要两列具有上限值和下限值,并希望创建两列,如下所示

 A UpperA LowerA
 3   4      1
 4   6      3

UpperA的逻辑应该是这样的 UpperA= min(i for i in lst if i>k)

LowerA的逻辑应该是这样的 LowerA = max(i for i in lst if i<k)

这里k是A列中的值


Tags: in列表forif排序逻辑minmax
1条回答
网友
1楼 · 发布于 2024-09-29 20:17:36

使用merge_asof获取高于或低于以下值:

df = pd.DataFrame({"A": [3, 4]})
lst = [1,3,4,6]
lst_df = pd.DataFrame({"bounderies": lst})

res = pd.merge_asof(df, lst_df, left_on="A", 
                               right_on="bounderies", 
                               direction = "backward", 
                               allow_exact_matches=False)
res.rename(columns = {"bounderies": "lowerA"}, inplace=True)

res = pd.merge_asof(res, lst_df, left_on="A", 
                               right_on="bounderies", 
                               direction = "forward", 
                               allow_exact_matches=False)

res.rename(columns = {"bounderies": "upperA"}, inplace=True)

结果是:

   A  lowerA  upperA
0  3       1       4
1  4       3       6

相关问题 更多 >

    热门问题