python - reshape 表格 - 列中的条目变为新列

标签 python pandas python-3.5

给出以下数据:

        Symbol        Date      Type         Value
518         ZW  2008-01-02        cm  1.204330e+09
519         ZW  2008-01-02   cm_next  1.209600e+09
520         ZW  2008-01-02       p&l  0.000000e+00
521         ZW  2008-01-02  position  0.000000e+00
522         ZW  2008-01-02  rolldate  1.203466e+09
523         ZW  2008-01-02     value  3.114788e+04
524         ZW  2008-01-02      vola  6.256606e+02
1046        ZW  2008-01-03        cm  1.204330e+09
1047        ZW  2008-01-03   cm_next  1.209600e+09
1048        ZW  2008-01-03       p&l  0.000000e+00
1049        ZW  2008-01-03  position  0.000000e+00
1050        ZW  2008-01-03  rolldate  1.203466e+09
1051        ZW  2008-01-03     value  3.202738e+04
1052        ZW  2008-01-03      vola  6.338274e+02
1574        ZW  2008-01-04        cm  1.204330e+09
1575        ZW  2008-01-04   cm_next  1.209600e+09
1576        ZW  2008-01-04       p&l  0.000000e+00
1577        ZW  2008-01-04  position  0.000000e+00
1578        ZW  2008-01-04  rolldate  1.203466e+09
1579        ZW  2008-01-04     value  3.162559e+04
1580        ZW  2008-01-04      vola  6.357563e+02
2102        ZW  2008-01-07        cm  1.204330e+09
2103        ZW  2008-01-07   cm_next  1.209600e+09
2104        ZW  2008-01-07       p&l  0.000000e+00
2105        ZW  2008-01-07  position  0.000000e+00
2106        ZW  2008-01-07  rolldate  1.203466e+09
2107        ZW  2008-01-07     value  3.066630e+04
2108        ZW  2008-01-07      vola  6.381839e+02

我想将此表 reshape 为以下格式:

Symbol | Date | cm | cm_next | rolldate | p&l | position | [etc..]

即我的所有类型都应该是列,并包含每个日期各自的值。

我已经尝试过df.pivot()df.unstack()但是唉,我想要的超出了他们的范围,并不完全是我想要的据我了解。

我可以提取 Type 列中每种类型的数据并将其重新粘合在一起 - 但这似乎是一种相当原始的方法。 有没有更好、更pandaic的方法来实现这个目标?

最佳答案

我认为你需要pivot_table ,但数据由 np.mean(默认 aggfunc=np.mean)和 rename_axis 聚合(pandas 0.18.0 中的新功能)和 reset_index :

print df.pivot_table(index=['Symbol','Date'], columns='Type', values='Value')
        .rename_axis(None, axis=1)
        .reset_index()

  Symbol        Date            cm       cm_next  p&l  position      rolldate  \
0     ZW  2008-01-02  1.204330e+09  1.209600e+09  0.0       0.0  1.203466e+09   
1     ZW  2008-01-03  1.204330e+09  1.209600e+09  0.0       0.0  1.203466e+09   
2     ZW  2008-01-04  1.204330e+09  1.209600e+09  0.0       0.0  1.203466e+09   
3     ZW  2008-01-07  1.204330e+09  1.209600e+09  0.0       0.0  1.203466e+09   

      value      vola  
0  31147.88  625.6606  
1  32027.38  633.8274  
2  31625.59  635.7563  
3  30666.30  638.1839  

关于python - reshape 表格 - 列中的条目变为新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934725/

相关文章:

用于更改键盘字母的 Python 脚本

python - 将全息图与 hvPlot 结合使用

python - DateTimeOffset(7) 就像从 MSSQL 到 python 日期时间一样?

python - 在 Numba 中获取类似结构化数组/数据帧的结构的最佳方法是什么?

python - Matplotlib 直方图不显示分布细节

ios - Device Farm 是否支持 python 3.5 和 appium 1.6.4-beta?

Python datetime 工作日数字代码 - 动态?

python - 使用新键将 Pandas DataFrame 转换为 Dict 格式

arrays - numpy.load 以错误的顺序检索保存的数组

python - 无法从 QVBoxLayout 中删除边距