gpt4 book ai didi

python - 如何在 Pandas 中获取一年中的 'cardinal' 日期?

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:10 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com