从熊猫数据框中找到值的第一个匹配项(从值列表中查找)并返回该行的索引

时间:2020-09-19 15:38:12

标签: python 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数据框功能所有。有没有一种方法可以直接循环访问格式为5-23-28-38-49的列表以捕获此信息,或者有一种方法可以循环访问各列以查找1到50之间所有数字的第一个出现次数

1 个答案:

答案 0 :(得分:1)

我们可以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