根据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”值,它实际上不是最后一个,我们不知道这意味着什么。请详细解释。