python - 透视和绘图数据

标签 python pandas

免责声明:I had posted a related question previously ,其中建议的技巧(根本不要为连接取消堆叠)对于该部分很有用,但最终我实际上想出于各种原因(包括绘图)取消堆叠。

这是我的数据:

                         var1        var2
date       status                        
2003-01-01 foo      69.037500  487.713615
           fubar    69.037500  563.257104
2005-01-01 foo      69.833333  479.454816
           fubar    69.833333  630.014694
2007-01-01 foo      69.137500  465.405122

请注意,var2 是特定于(date, status) 的,但 var1 仅特定于给定日期 - 它与两种状态。

因此,尽管有 2 个状态和 2 个变量,但它实际上只有 3 个时间序列。我想重新格式化数据框以反射(reflect)这一点。我想要的输出是

                var1    var2_foo var2_fubar
date                          
2003-01-01 69.037500  487.713615 563.257104
2005-01-01 69.833333  479.454816 630.014694
2007-01-01 69.137500  465.405122        NaN

然后我可以使用相关比例很好地绘制这些图

df.plot(secondary_y = ['var1'])

我尝试实现此目的的部分内容已在另一个问题中进行了部分描述,但我特别尝试的一种方法是pivot:

尝试:透视 var2,然后再次合并

df1 = df.reset_index().pivot(index='date', columns='status', values='var2' )

几乎可以工作,但它完全放弃了另一列。

status             foo       fubar
date                              
2003-01-01  487.713615  563.257104
2005-01-01  479.454816  630.014694
2007-01-01  465.405122  565.706308
2009-01-01  440.538986  465.306299
2011-01-01  420.217694  419.310829
2013-01-01  439.222659  618.119540

这是我之后合并的尝试:

df2 = aggStandard.reset_index(level=1)['var1']
date
2003-01-01    69.037500
2003-01-01    69.037500
2005-01-01    69.833333
2005-01-01    69.833333
2007-01-01    69.137500
Name: var1, dtype: float64
pd.merge(df1,df2)
AttributeError: 'Series' object has no attribute 'columns'
foo.join(bar)
TypeError: Argument 'left' has incorrect type (expected numpy.ndarray, got Index)

最佳答案

好吧,我想你明白了,但如果这有帮助(并且是 @ASGM 所做的变化):

In [67]: df2 = df.unstack('status').iloc[:,1:]

In [68]: df2.columns = [['var1','var2_foo','var2_fubar']]

In [69]: df2
Out[69]: 
                 var1    var2_foo  var2_fubar
date                                         
2003-01-01  69.037500  487.713615  563.257104
2005-01-01  69.833333  479.454816  630.014694
2007-01-01        NaN  465.405122         NaN

关于python - 透视和绘图数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29172976/

相关文章:

python - 如何关闭pandas read_sql连接

python - 在 Emacs 中从 App Engine 取回 `pdb` 的控制权

python - 在 Pandas 数据框中查找常见单词

python - 如何在 Python 中使用变量更新 sqlite 条目

python - Python中如何添加对应列名最大的列?

python - 将 Pandas Dataframe 转换为 sklearn 的 numpy

pandas - 在随机森林中传递 Class_weight 参数时出现错误

python - 将整数转换为数字列表

python - Pandas - 高效的元素比较

python - 从 Pandas DataFrame 列标题中获取列表