Trazando barras de error en gráficos de barras con series múltiples en pandas

Puedo trazar barras de error en gráficos de barras de una sola serie de la siguiente manera:

import pandas as pd df = pd.DataFrame([[4,6,1,3], [5,7,5,2]], columns = ['mean1', 'mean2', 'std1', 'std2'], index=['A', 'B']) print(df) mean1 mean2 std1 std2 A 4 6 1 3 B 5 7 5 2 df['mean1'].plot(kind='bar', yerr=df['std1'], alpha = 0.5,error_kw=dict(ecolor='k')) 

introduzca la descripción de la imagen aquí

Como se esperaba, la media del índice A se empareja con la desviación estándar del mismo índice, y la barra de error muestra el +/- de este valor.

Sin embargo, cuando trato de graficar tanto ‘media1’ como ‘media2’ en la misma gráfica no puedo usar las desviaciones estándar de la misma manera:

 df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k')) Traceback (most recent call last): File "", line 1, in  df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']], alpha = 0.5,error_kw=dict(ecolor='k')) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1705, in plot_frame plot_obj.generate() File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 878, in generate self._make_plot() File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1534, in _make_plot start=start, label=label, **kwds) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\tools\plotting.py", line 1481, in f return ax.bar(x, y, w, bottom=start,log=self.log, **kwds) File "C:\Users\nameDropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\matplotlib\axes.py", line 5075, in bar fmt=None, **error_kw) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\matplotlib\axes.py", line 5749, in errorbar iterable(yerr[0]) and iterable(yerr[1])): File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\frame.py", line 1635, in __getitem__ return self._getitem_column(key) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\frame.py", line 1642, in _getitem_column return self._get_item_cache(key) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\generic.py", line 983, in _get_item_cache values = self._data.get(item) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 2754, in get _, block = self._find_block(item) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 3065, in _find_block self._check_have(item) File "C:\Users\name\Dropbox\Tools\WinPython-64bit-2.7.6.2\python-2.7.6.amd64\lib\site-packages\pandas\core\internals.py", line 3072, in _check_have raise KeyError('no item named %s' % com.pprint_thing(item)) KeyError: u'no item named 0' 

Lo más cerca que he llegado a mi salida deseada es esto:

 df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']].values.T, alpha = 0.5,error_kw=dict(ecolor='k')) 

introduzca la descripción de la imagen aquí

Pero ahora las barras de error no se trazan simétricamente. En cambio, las barras verde y borrosa de cada serie usan los mismos errores positivos y negativos, y aquí es donde estoy atascado. ¿Cómo puedo obtener las barras de error de mi gráfico de barras multiseries para tener una apariencia similar a la de una serie?

Actualización: Parece que esto está arreglado en pandas 0.14 , estaba leyendo la documentación de 0.13 anteriormente. Aunque no tengo la posibilidad de mejorar mis pandas ahora mismo. Lo haré más tarde y veremos cómo resulta.

Roger que Ajean y Alios!

Bueno, finalmente encontré la respuesta a la pregunta. Esto es algo que he estado tratando de hacer durante días. El problema aparentemente era un problema en una versión anterior de Pandas. Instalé Pandas 0.15.0 y ahora puede hacer referencia a otro dataframe y usar los datos para las barras de error en las gráficas de barras agrupadas como Ceflo intentaba hacer más arriba. Así que el siguiente código ahora funciona en Pandas 0.15.0.

 import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame([[4,6,1,3], [5,7,5,2]], columns = ['mean1', 'mean2', 'std1', 'std2'], index=['A', 'B']) print(df) df[['mean1', 'mean2']].plot(kind='bar', yerr=df[['std1', 'std2']].values.T, alpha = 0.5,error_kw=dict(ecolor='k')) plt.show()