Python 如何获得';红衣主教';熊猫的一年中的哪一天?
我的df看起来像这样,其中“O”是一年中的第几天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
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