我试图操纵我的数据帧,以便列名称(星期一,星期二)可以在seaborn散点图的x轴中使用(如下所示)。现在我有这个:
week Sun Mon Tues Wed Thur Fri Sat
0 2016-05-08 0 0 0 3 1 5 1
1 2016-05-15 0 0 0 1 0 0 1
2 2016-05-22 0 0 1 2 3 0 0
3 2016-05-29 0 0 1 0 0 0 0
4 2016-06-05 0 0 3 19 19 14 1
5 2016-06-12 0 40 30 14 0 0 0
6 2016-06-19 3 16 10 26 38 17 17
7 2016-06-26 0 4 3 1 1 4 0
我唯一能想到的就是改变我的数据格式,使它变成这样:
week day amount
2016-05-08 Sun 1
2016-05-15 Sun 30
2016-05-22 Sun 0
2016-05-29 Mon 6
2016-06-19 Mon 40
我有点困惑如何将它拆开。
我将非常感谢能够实现这一目标的任何方向。
答案 0 :(得分:1)
要将数据从宽格式重新排列为长格式:
df.set_index('week').stack().rename_axis(('week','day')).reset_index().rename(columns={0:'amount'})
你附上的图片是Seaborn生成的stripplot。
Seaborn无需数据操作。
import seaborn as sns
print(df)
week day amount
0 2016-05-08 Sunday 1
1 2016-05-15 Sunday 30
2 2016-05-22 Sunday 0
3 2016-05-29 Monday 6
4 2016-06-19 Monday 40
_ = sns.stripplot('day', 'amount', data=df)
但是,如果您仍想操纵数据,可以使用以下命令:
df_out = df.set_index(['week','day']).unstack()
df_out.columns = df_out.columns.droplevel()
print(df_out)
输出:
day Monday Sunday
week
2016-05-08 NaN 1.0
2016-05-15 NaN 30.0
2016-05-22 NaN 0.0
2016-05-29 6.0 NaN
2016-06-19 40.0 NaN