Получить первый и последний элементы из списка в соответствии с перечислить список Python - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть столбец в Пандах, полный списков.Каждая строка выглядит следующим образом:

row_1 = [7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
row_2 = [7, 8, 9, 15, 16, 17, 18, 19]
...
row_n = [27, 28, 29, 30, 31, 32, 33, 34, 35]

И мне нужно получить граничные значения и вставить их в кортеж, например,

full_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, ...,35]

и в соответствии с приведенным выше списком найти первое и последнее значения:

row_tuple_1 = [(7, 8), (14, 23)]
row_tuple_2 = [(7, 9), (15, 19)]
...
row_tuple_n = [(27, 35)]

Есть ли способ сделать это?

Upd1:

Представьте себе, что full_list - это то, как row_1 должно выглядеть,Но это не так.

Другой вариант записи row_1:

row_1 = [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 7, 8, np.nan, 
np.nan, np.nan, np.nan, np.nan, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, np.nan, ...]

Так что (start, end) кортеж должен быть (7, 8) и (14, 23)

1 Ответ

2 голосов
/ 20 сентября 2019

Наконец, знаете, что вам нужно, нам нужно использовать groupby для каждой строки

def func(x):
    s=pd.Series(x)
    return s.groupby(s.diff().ne(1).cumsum()).agg(['first','last']).values.tolist()
df.L.apply(func)
Out[145]: 
0    [[7, 8], [14, 23]]
1    [[7, 9], [15, 19]]
2            [[27, 35]]
Name: L, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...