首页 > 解决方案 > 在 pandas 数据框中找到第一次出现的值(从值列表中)并返回该行的索引

问题描述

我有一个 pandas 数据框:(实际数据集要大得多,包含 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 数据框的功能。有没有一种方法可以直接以 5-23-28-38-49 格式遍历列表以捕获此信息,或者有一种方法可以遍历列以查找 1 到 50 之间所有数字的第一次出现

标签: pythonpandasdataframe

解决方案


stack我们可以做到drop_duplicates

out = df.loc[:,'N2':].stack().drop_duplicates()
0  N2    12
   N3    14
   N4    40
   N5    42
1  N2     5
   N3    24
   N4    43
   N5    45
2  N2    23
   N3    28
   N4    38
   N5    49
3  N2    11
   N3    22
   N5    41
4  N2    27
   N3    30
   N4    46
dtype: int64

推荐阅读