Python 如何获得';红衣主教';熊猫的一年中的哪一天?

Python 如何获得';红衣主教';熊猫的一年中的哪一天?,python,python-2.7,date,pandas,dataframe,Python,Python 2.7,Date,Pandas,Dataframe,我的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

我的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
注意:数据集有很多年,所以关键是每次索引中有新的一年,计数都会重新开始


感谢

要创建一列,作为每年重置的运行计数,您可以使用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