我如何处理这样的数据帧,进行一个转置,将一个数据帧连接到另一个数据框下,并以日期的形式排列它?
让它通过转换这个现有的数据帧,而不干扰它的创建。
数据帧:
df = pd.DataFrame({
'Jan':[1, 2, 3],
'Feb':[4, 5, 6],
'Mar':[7, 8, 9]
})
df
输出:
Jan Feb Mar
0 1 4 7
1 2 5 8
2 3 6 9
期望结果:
1990-Jan 1
1990-Feb 4
1990-Mar 7
1991-Jan 2
1991-Feb 5
1991-Mar 8
1992-Jan 3
1992-Feb 6
1992-Mar 9
obs:在最终结果中,日期不一定是月份的名称,可以是它们的数字。
# flatten the DF
df2=df.stack().reset_index().rename(columns={0:'val'})
# create the date
df2['date'] = (1990 + df2['level_0']).astype('str') + "-" + df2['level_1']
# drop unwanted columns
df2=df2.drop(columns=['level_0','level_1'])
df2
val date
0 1 1990-Jan
1 4 1990-Feb
2 7 1990-Mar
3 2 1991-Jan
4 5 1991-Feb
5 8 1991-Mar
6 3 1992-Jan
7 6 1992-Feb
8 9 1992-Mar