根据enumerate list Python从列表中获取第一个和最后一个元素

根据enumerate list Python从列表中获取第一个和最后一个元素,python,pandas,numpy,Python,Pandas,Numpy,我在《熊猫》杂志上有一个列满了清单的专栏。每一行看起来像: 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

我在《熊猫》杂志上有一个列满了清单的专栏。每一行看起来像:

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\u list
row\u 1
的样子。但事实并非如此

写入
第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, ...]

所以
(开始,结束)
元组应该是
(7,8)
(14,23)
最后知道您需要什么,我们需要对每一行使用
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

终于知道您需要什么了,我们需要为每一行使用
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

我对熊猫一无所知,但一般来说,列表中的第一项是
mylist[0]
,最后一项是
mylist[-1]
。然而,您的示例令人困惑——您是如何将
(14,23)
作为
行的第二个值的?我看到
23
行1
中的最后一个值,但是
14
从哪里来?
14
行1
中是否有第三个值。这是一件事,我需要得到“last”值,它不是真正的last。你能解释更多吗?是的,我看到
14
row\u 1
中的第三项,但为什么它属于
row\u tuple\u 1
?为什么
row\u tuple\u 1
包含
row\u 1
中的第一个和第二个、第三个和最后一个项目?我需要得到“last”值,它实际上不是最后一个,我们不知道这意味着什么。请详细解释。我对熊猫一无所知,但一般来说,列表中的第一项是
mylist[0]
,最后一项是
mylist[-1]
。然而,您的示例令人困惑——您是如何将
(14,23)
作为
行的第二个值的?我看到
23
行1
中的最后一个值,但是
14
从哪里来?
14
行1
中是否有第三个值。这是一件事,我需要得到“last”值,它不是真正的last。你能解释更多吗?是的,我看到
14
row\u 1
中的第三项,但为什么它属于
row\u tuple\u 1
?为什么
row\u tuple\u 1
包含
row\u 1
中的第一个和第二个、第三个和最后一个项目?我需要得到“last”值,它实际上不是最后一个,我们不知道这意味着什么。请详细解释。