matplotlib allows for individual error bars (I assume that's what you mean by 'whiskers'). Here is the page on matplotlib:
https://matplotlib.org/1.2.1/examples/pylab_examples/errorbar_demo.html
You can explicitly define the error bars by using xerr and yerr:
"xerr/yerr : scalar or array-like, shape(N,) or shape(2,N), optional
If a scalar number, len(N) array-like object, or a N-element array-like object, errorbars are drawn at +/-value relative to the data. Default is None.
If a sequence of shape 2xN, errorbars are drawn at -row1 and +row2 relative to the data."
...and plug them into their respective positions in matplotlib.axes.Axes.errorbar
Axes.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)
page: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.html
If you are interested in making the error bars different in the +y and -y directions, then you can plot twice on the same figure where the second plot has no markers except for the error bars, and the center of those error bars is the mean between the +y and -y values.