Pandas将列重塑为时间序列行

时间:2017-12-05 09:03:48

标签: python pandas time-series reshape

我有一个pandas数据帧(不幸的是重复...)

Date        Partner   Value
2017-02-01  Partner1  150
2017-03-01  Partner1  170
2017-02-01  Partner2  160
2017-03-01  Partner2  185
2017-02-01  Partner1  40
2017-03-01  Partner1  90

我希望合作伙伴重塑一下,看起来像这样:

Partner    2017-02-01   2017-03-01
Partner1   150          170
Partner2   160          185
Partner1   40           90

我该怎么做?

2 个答案:

答案 0 :(得分:3)

实际上,我找到了我需要的答案:

series = pd.pivot_table(data, values="Value", index="Partner", columns="Date")

答案 1 :(得分:2)

这是另一种解决方案:

来源DF:

In [143]: df
Out[143]:
         Date   Partner  Value
0  2017-02-01  Partner1    150
1  2017-02-01  Partner1    199   # NOTE: duplicated `Date` & `Partner`
2  2017-03-01  Partner1    170
3  2017-02-01  Partner2    160
4  2017-03-01  Partner2    185

解决方案:

In [144]: df.groupby(['Partner','Date'])['Value'].mean().unstack().rename_axis(None).rename_axis(None, 1)
Out[144]:
          2017-02-01  2017-03-01
Partner1       174.5       170.0
Partner2       160.0       185.0