【问题标题】:How to get the 'cardinal' day of the year in Pandas?如何在 Pandas 中获得一年中的“红衣主教”日?
【发布时间】:2016-04-28 03:48:23
【问题描述】:

我的 df 看起来像这样,其中 'O' 是一年中的序号日期。

            Close   O
Date        
1950-01-03  16.66   3
1950-01-04  16.85   4
1950-01-05  16.93   5
1950-01-06  16.98   6
1950-01-09  17.08   9
1950-01-10  17.03   10
1950-01-11  17.09   11
1950-01-12  16.76   12
1950-01-13  16.67   13
1950-01-16  16.71   16

我想要给定数据集的一年中的主要日子。期望的结果是:

            Close   O  C  
Date        
1950-01-03  16.66   3  1   
1950-01-04  16.85   4  2
1950-01-05  16.93   5  3
1950-01-06  16.98   6  4
1950-01-09  17.08   9  5
1950-01-10  17.03   10 6
1950-01-11  17.09   11 7
1950-01-12  16.76   12 8
1950-01-13  16.67   13 9
1950-01-16  16.71   16 10

注意:数据集是很多年的,所以关键是每次索引中有新的一年都会重新计数。

谢谢

【问题讨论】:

    标签: python python-2.7 date pandas dataframe


    【解决方案1】:

    要创建一个每年重置的运行计数列,您可以使用 groupby/cumcount:

    df['C'] = df.groupby(df.index.year).cumcount(1)+1
    

    例如,

    df = pd.DataFrame({
        'Close': [16.66, 16.85, 16.93, 16.98, 17.08, 17.03, 17.09, 16.76, 16.67, 16.71, 20],
        'Date': ['1950-01-03', '1950-01-04', '1950-01-05', '1950-01-06', '1950-01-09', 
                 '1950-01-10', '1950-01-11', '1950-01-12', '1950-01-13', '1950-01-16',
                 '1951-01-01'], })
    df['Date'] = pd.to_datetime(df['Date'])
    df = df.set_index('Date')
    
    df['O'] = df.index.day
    df['C'] = df.groupby(df.index.year).cumcount(1)+1
    

    产量

                Close   O   C
    Date                     
    1950-01-03  16.66   3   1
    1950-01-04  16.85   4   2
    1950-01-05  16.93   5   3
    1950-01-06  16.98   6   4
    1950-01-09  17.08   9   5
    1950-01-10  17.03  10   6
    1950-01-11  17.09  11   7
    1950-01-12  16.76  12   8
    1950-01-13  16.67  13   9
    1950-01-16  16.71  16  10
    1951-01-01  20.00   1   1
    

    【讨论】:

      猜你喜欢
      • 2010-12-18
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2022-06-10
      相关资源
      最近更新 更多