从大熊猫中的一列切片中新建一列



我正在使用panda处理时间序列数据,我的数据帧看起来有点像这个

Date         Layer
0    2000-01-01       0.408640
1    2000-01-02       0.842065
2    2000-01-03       1.271810
3    2000-01-04       1.699399
4    2000-01-05       2.128098
...            ...
7300 2019-12-27     149.323520
7301 2019-12-28     149.744012
7302 2019-12-29     150.155702
7303 2019-12-30     150.562771
7304 2019-12-31     151.003031

我需要为每年做一个专栏,像这样:

2000        2001      2002
0     0.408640   0.415863   0.425689
1     0.852653   0.826542   0.863524   
...        ...         ...
364  156.235978 158.564578 152.135689
365  156.685421 158.924556 152.528978

我有办法做到这一点吗?生成的数据可以在新的数据帧中

这样做的方法是创建单独的年份和日期列,然后创建一个数据透视表:

#Convert Date column to pandas datetime if you haven't already:
df['Date'] = pd.to_datetime(df['Date'])
#Create year column
df['Year'] = df['Date'].dt.year
#Create day of year column
df['DayOfYear'] = df['Date'].dt.dayofyear
#create pivot table in new dataframe
df2 = pd.pivot_table(df, index = 'DayOfYear', columns = 'Year', values = 'Layer')

这看起来与您想要的输出不完全一样,因为索引将编号为1-365(并有一个名称(,而不是0-364。如果你想让它完全匹配,你可以添加:

df2 = df2.reset_index()

最新更新