주어진 숫자,을 얻는 방법은 이전과는 다음 값을 내니까? [마감]

0

질문

나는 다음과 같은 데이터 프레임:

VALUE_TO_FIND  UNORDERED_LIST
5              [0,10]
3              [1,0,10,8,4,2]
2              [9,10,0]
5              [4,8,0,1,2,10]
4              [0,10,4]

주어진 값에서 열 VALUE_TO_FIND어떻게 받을 수 있고 이전과 다음 내부 값 UNORDERED_LIST?

VALUE_TO_FIND  UNORDERED_LIST   PREVIOUS_VALUE   NEXT_VALUE
5              [0,10]           0                10
3              [1,0,10,8,4,2]   2                4
2              [9,10,0]         0                9
5              [4,8,0,1,2,10]   4                8
4              [0,10,4]         4                4

참고: UNORDERED_LIST 상의 최소 및 최대 VALUE_TO_FIND

dataframe pandas python
2021-11-24 02:55:34
1

최고의 응답

1

이 있는 더 효과적인 솔루션으로,그러나 내가 노력 zipping 두 개의 관련성 높은 항목:

import pandas as pd
df = pd.DataFrame({'VALUE_TO_FIND': [5, 3, 2, 5, 4,],
    'UNORDERED_LIST': [[0,10], [1,0,10,8,4,2], [9,10,0], [4,8,0,1,2,10], [0,10,4],]})

def find_prev_next(x, lst):
    return max(y for y in lst if y <= x), min(y for y in lst if y >= x) # tuple

_ = [find_prev_next(x, lst) for x, lst in zip(df.VALUE_TO_FIND, df.UNORDERED_LIST)]
df['PREVIOUS_VALUE'], df['NEXT_VALUE'] = zip(*_)

print(df)
   # VALUE_TO_FIND       UNORDERED_LIST  PREVIOUS_VALUE  NEXT_VALUE
# 0              5              [0, 10]               0          10
# 1              3  [1, 0, 10, 8, 4, 2]               2           4
# 2              2           [9, 10, 0]               0           9
# 3              5  [4, 8, 0, 1, 2, 10]               4           8
# 4              4           [0, 10, 4]               4           4
2021-11-24 03:32:02

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................