python - 如何获取 Pandas 中的 'cardinal' 一年中的哪一天?

标签 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  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 中的 'cardinal' 一年中的哪一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931548/

相关文章:

python - Tensorflow 循环中的切片分配

Python:创建列表列表

python - 在Python中递归打印对象的所有属性、列表、字典等

python - 将 pandas 中的 groupby() 拆分为更小的组并将它们组合起来

python - 在Python中获取列表中每个元组的第一个元素

python - 如何替换 pandas 数据框中列中的日期?

python - 是否可以在Python中重写namedtuple中的方法?

python - 在 Python 中将变量更改为输出文件的名称

r - 如何删除 ggplot2 中日期 Axis 上的间隙

vba - 使用以下命令更改 Excel 中的日期格式