【问题标题】:How to find the further occurrence of an element within a column如何在列中查找元素的进一步出现
【发布时间】:2020-05-18 17:07:19
【问题描述】:

我有一个包含 6000 行和一列的数据框。我必须找到第二列的相同元素,但要最大化它们之间的距离。带有列表的示例是:

list = [2,1,3,1,2,4,5,1,3,2,1,5]

我希望输出是对:

(list[1], list[10])

有什么想法吗? 谢谢各位!

【问题讨论】:

    标签: python python-3.x pandas dataframe find-occurrences


    【解决方案1】:

    你可以试试这个。使用pd.Groupby.agg进行索引,并索引第一个元素和最后一个元素。

    lst = [2,1,3,1,2,4,5,1,3,2,1,5]
    df = pd.DataFrame(lst,columns=['vals'])
    
    df=df.reset_index().groupby('vals').agg(['first','last'])
    df
         index
         first last
    vals
    1        1   10
    2        0    9
    3        2    8
    4        5    5
    5        6   11
    
    #The above df has multiIndex column to make it single index column
    df.columns=df.columns.get_level_values(1)
    df
          first  last
    vals
    1         1    10
    2         0     9
    3         2     8
    4         5     5
    5         6    11
    

    或者您可以使用pd.NamedAgg 进行命名聚合。

    df.reset_index().groupby('vals').agg(
                         first_occurrence=pd.NamedAgg(column='index',aggfunc='first'),
                         last_occurrence=pd.NamedAgg(column='index',aggfunc='last')
                         )
    
          first_occurrence  last_occurrence
    vals
    1                   1              10
    2                   0               9
    3                   2               8
    4                   5               5
    5                   6              11
    

    如果您希望它们与元组位于同一列中,请使用 df.apply

    df['occurances']=df.vals.apply(lambda x:(df.index[df.vals==x][0],
                                             df.index[df.vals==x][-1]))
    df
        vals occurances
    0      2     (0, 9)
    1      1    (1, 10)
    2      3     (2, 8)
    3      1    (1, 10)
    4      2     (0, 9)
    5      4     (5, 5)
    6      5    (6, 11)
    7      1    (1, 10)
    8      3     (2, 8)
    9      2     (0, 9)
    10     1    (1, 10)
    11     5    (6, 11)
    

    【讨论】:

      猜你喜欢
      • 2011-09-11
      • 2012-11-08
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2015-06-09
      相关资源
      最近更新 更多