【问题标题】:Number new occurrences per day in pandas dataframe (not count or sum)熊猫数据框中每天的新出现次数(不计数或总和)
【发布时间】:2020-12-28 16:52:06
【问题描述】:

假设我有一个如下图所示的数据框,我将每天看到的每只动物记录为新行。

Day     Animal
1       Lion
1       Elephant
1       Giraffe
1       Elephant
2       Elephant
2       Rhino
2       Rhino
2       Lion
2       Elephant

我想创建一个新列,其中包含1 用于每天看到的第一只动物(以及当天每次看到同一只动物),并包含2 用于下一只动物,依此类推。上面示例的结果应如下所示:

Day     Animal      Number
1       Lion        1
1       Elephant    2
1       Giraffe     3
1       Elephant    2 
2       Elephant    1
2       Rhino       2
2       Rhino       2
2       Lion        3
2       Elephant    1

请注意,这是一个简化的示例。我知道在上面的这个例子中,人们可能更喜欢使用groupbycount 的组合来计算每天的发生次数(例如summing the number of occurrences per day pandas)。但是,在我的真实案例中,情况并非如此。我需要给它们编号,以便以后可以将这些数字用于其他用途。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用series.factorize 而非groupby.transform

    df['Number'] = df.groupby("Day")['Animal'].transform(lambda x: x.factorize()[0])+1
    print(df)
    

       Day    Animal  Number
    0    1      Lion       1
    1    1  Elephant       2
    2    1   Giraffe       3
    3    1  Elephant       2
    4    2  Elephant       1
    5    2     Rhino       2
    6    2     Rhino       2
    7    2      Lion       3
    8    2  Elephant       1
    

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      • 2017-01-19
      • 2018-09-22
      相关资源
      最近更新 更多