我的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
关于python - 如何获得 Pandas 一年中的“重要”日子?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34931548/