如何根据输入年份生成包含一年中的几天的数据框?

How can I generate a dataframe with the days of the year based on an input year?

我想生成一个数据框,其中根据指定年份将一年中的天数附加到第一列。我怎样才能做到这一点?我正在使用 pandas date_range 模块。

这是我尝试过的:

#Import modules
import pandas as pd
import numpy as np
import datetime as dt

#Specify the year
year = 1976

#Create dataframe
df = pd.Series(pd.date_range(year, periods=365, freq='D'))

print(df)

结果:

0     1970-01-01 00:00:00.000001976
1     1970-01-02 00:00:00.000001976
2     1970-01-03 00:00:00.000001976
3     1970-01-04 00:00:00.000001976
4     1970-01-05 00:00:00.000001976
                   ...             
360   1970-12-27 00:00:00.000001976
361   1970-12-28 00:00:00.000001976
362   1970-12-29 00:00:00.000001976
363   1970-12-30 00:00:00.000001976
364   1970-12-31 00:00:00.000001976
Length: 365, dtype: datetime64[ns]

这里的年份是错误的,我需要它是 1976 年。此外,我只需要一个“一年中的第几天”列,其中的行数对应于一年中的天数(这将占闰年)。我该如何解决这个问题?

输出应该是一个看起来像这样的数据框(它应该一直延伸到一年的最后一天):

d = {
    'year': [1976, 1976, 1976, 1976, 1976, 1976],
    'day of the year': [1, 2, 3, 4, 5, 6]
}
df1 = pd.DataFrame(data=d)
df1
year = 1976
dates = pd.Series(pd.date_range(str(year) + "-01-01", str(year) + "-12-31", freq="D"))
days = dates.diff().astype("timedelta64[D]").fillna(1).cumsum()
df = pd.DataFrame({"year": dates.dt.year, "days": days})
df = df.set_index(dates)
print(df)
#             year   days
# 1976-01-01  1976    1.0
# 1976-01-02  1976    2.0
# 1976-01-03  1976    3.0
# 1976-01-04  1976    4.0
# 1976-01-05  1976    5.0
# ...          ...    ...
# 1976-12-27  1976  362.0
# 1976-12-28  1976  363.0
# 1976-12-29  1976  364.0
# 1976-12-30  1976  365.0
# 1976-12-31  1976  366.0

# [366 rows x 2 columns]

或者

import calendar

year = 1976

n_days = 366 if calendar.isleap(year) else 365
df = pd.DataFrame({"year": year,
                   "days": range(1, n_days + 1)})