我的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/

10-09 03:58