猿问

在 pandas 数据框中查找某个值(从值列表中)第一次出现并返回该行的索引

我有一个 pandas DataFrame(实际数据集要大得多,包含 1-50 的数字):


          date           main   N1  N2  N3  N4  N5

0   2020-09-18  7-12-14-40-42   7   12  14  40  42

1   2020-09-11  2-5-24-43-45    2   5   24  43  45

2   2020-09-04  5-23-28-38-49   5   23  28  38  49

3   2020-08-28  8-11-22-38-41   8   11  22  38  41

4   2020-08-21  26-27-30-46-49  26  27  30  46  49

我想返回每个数字第一次出现的行索引。到目前为止,我能够实现这一目标的唯一方法是“手动”使用


lotteryData.loc[(lotteryData.N5==1)].head(49)

在本例中,行索引号为 2。这显然非常笨拙,并且根本没有利用 Pandas DataFrame 的功能。有没有一种方法可以直接迭代 5-23-28-38-49 格式的列表来捕获此信息,或者可以迭代列以查找 1 到 50 之间所有数字的第一次出现


莫回无
浏览 144回答 1
1回答

holdtom

我们可以stack做drop_duplicatesout = df.loc[:,'N2':].stack().drop_duplicates()0  N2    12   N3    14   N4    40   N5    421  N2     5   N3    24   N4    43   N5    452  N2    23   N3    28   N4    38   N5    493  N2    11   N3    22   N5    414  N2    27   N3    30   N4    46dtype: int64
随时随地看视频慕课网APP

相关分类

Python
我要回答