我目前正在处理一些水文数据,因此我对数据透视功能进行了一些分析。因此,我想以十月至九月为水文年份。那么,matplotlib中是否有一种方法可以更改绘图中x轴的排序?

我的数据透视函数如下所示:

pv = pd.pivot_table(df_mb, index=df_mb.index.month, columns=df_mb.index.year, aggfunc='mean')

pv.MB

    2011        2012            2013
1   NaN         0.159587        0.119823
2   NaN         0.134704        0.129065
3   NaN         0.163604        0.156006
4   NaN         0.451304        0.260984
5   NaN         0.202280        0.286951
6   NaN         -0.656959       -0.266000
7   NaN         -1.000123       -1.284144
8   NaN         -1.477041       -0.694400
9   NaN         0.002894        -0.196538
10  0.186086    0.191084        0.307935
11  0.299759    0.451645        NaN
12  0.133154    0.048562        NaN


给我一个像这样的情节:


因此,我希望绘图的x轴从10开始到9结束。有人知道如何到达那里吗?

最佳答案

您可以像这样定义新列:

df['col'] = np.where(df.index.month < 10, df.index.year, df.index.year + 1)
df['idx'] = np.where(df.index.month < 10, df.index.month+3, df.index.month-9)

df.pivot_table(index='idx',columns='col', values='val', aggfunc='mean')


给出例如

col  2014  2015
idx
1       8     7
2       8     3
3       6     6
4       2     4
5       8     3
6       7     7
7       2     6
8       1     1
9       5     3
10      4     5
11      4     8
12      5     4

10-06 05:17
查看更多