Skip to content

Instantly share code, notes, and snippets.

@ankostis
Created April 1, 2016 17:28
Show Gist options
  • Save ankostis/bde093156f8e22238ea8f0b67bf698c3 to your computer and use it in GitHub Desktop.
Save ankostis/bde093156f8e22238ea8f0b67bf698c3 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ank=\"\"\"\n",
"alabaster (0.7.7)\n",
"asteval (0.9.5)\n",
"astroid (1.4.1)\n",
"Babel (2.2.0)\n",
"backports-abc (0.4)\n",
"baresql (0.7.3)\n",
"base58 (0.2.2)\n",
"beautifulsoup4 (4.4.1)\n",
"bitcoin (1.1.42, d:\\apps\\cygwin64\\home\\anastkn\\work\\pybitcointools.git)\n",
"bitmerchant (0.1.8)\n",
"boltons (16.1.0)\n",
"cachetools (1.1.5)\n",
"cffi (1.5.2)\n",
"cloudpickle (0.1.1)\n",
"co2mpas (1.1.1.post2, d:\\work\\compas.vinz)\n",
"colorama (0.3.6)\n",
"commontools (0.1.0)\n",
"cryptography (1.2.2)\n",
"cycler (0.9.0)\n",
"db.py (0.4.4)\n",
"ddt (1.0.1)\n",
"decorator (4.0.6)\n",
"dill (0.2.4)\n",
"docopt (0.6.2)\n",
"docutils (0.12)\n",
"doit (0.29.0)\n",
"easygui (0.97.4)\n",
"ecdsa (0.13)\n",
"formlayout (1.1.0)\n",
"future (0.15.2)\n",
"graphviz (0.4.9)\n",
"guidata (1.7.4)\n",
"guiqwt (3.0.1)\n",
"h5py (2.5.0)\n",
"html5lib (0.9999999)\n",
"hyperop (1.1)\n",
"idna (2.0)\n",
"ipykernel (4.2.1)\n",
"ipyparallel (4.1.0)\n",
"ipython (4.0.1)\n",
"ipython-genutils (0.1.0)\n",
"ipython-sql (0.3.7.1)\n",
"ipywidgets (4.1.1)\n",
"jedi (0.8.1)\n",
"Jinja2 (2.8)\n",
"jsonschema (2.5.1)\n",
"jupyter (1.0.0)\n",
"jupyter-client (4.1.1)\n",
"jupyter-console (4.0.3)\n",
"jupyter-core (4.0.6)\n",
"keychain (0.1.4)\n",
"keyring (8.5.1)\n",
"keyrings.alt (1.1.1)\n",
"lazy-object-proxy (1.2.1)\n",
"lmfit (0.9.2)\n",
"lxml (3.4.4)\n",
"MarkupSafe (0.23)\n",
"matplotlib (1.5.0)\n",
"mistune (0.7.1)\n",
"mpld3 (0.2)\n",
"nbconvert (4.1.0)\n",
"nbformat (4.0.1)\n",
"networkx (1.10)\n",
"notebook (4.0.6)\n",
"numexpr (2.4.6)\n",
"numpy (1.9.3)\n",
"openpyxl (1.8.6)\n",
"pandalone (0.1.9)\n",
"pandas (0.17.1)\n",
"pandas-datareader (0.2.0)\n",
"path.py (8.1.2)\n",
"patsy (0.4.1)\n",
"pbkdf2 (1.3)\n",
"pep8 (1.6.2)\n",
"pickleshare (0.5)\n",
"Pillow (3.0.0)\n",
"pip (8.1.0)\n",
"pkginfo (1.2.1)\n",
"plotly (1.9.6)\n",
"prettytable (0.7.2)\n",
"prompt-toolkit (0.54)\n",
"psutil (3.3.0)\n",
"pyasn1 (0.1.9)\n",
"pybars3 (0.9.1)\n",
"pybitcoin (0.9.8, d:\\apps\\cygwin64\\home\\anastkn\\work\\pybitcoin.git)\n",
"pycoin (0.62)\n",
"pycparser (2.14)\n",
"pycryptodome (3.3)\n",
"pyflakes (0.9.2)\n",
"Pygments (2.0.2)\n",
"pylint (1.5.1)\n",
"PyMeta3 (0.5.1)\n",
"pyodbc (3.0.10)\n",
"pyparsing (2.0.6)\n",
"pypiserver (1.1.10)\n",
"pypiwin32 (219)\n",
"pyqtgraph (0.9.10)\n",
"pyreadline (2.1)\n",
"python-bitcoinrpc (0.3)\n",
"python-dateutil (2.4.2)\n",
"python-gnupg (0.3.8)\n",
"PythonQwt (0.5.3)\n",
"pytz (2015.7)\n",
"pywin32-ctypes (0.0.1)\n",
"PyYAML (3.11)\n",
"pyzmq (15.1.0)\n",
"QtAwesome (0.2.0)\n",
"qtconsole (4.1.1)\n",
"QtPy (0.1.2)\n",
"regex (2016.1.10)\n",
"requests (2.8.1)\n",
"requests-toolbelt (0.6.0)\n",
"rope-py3k (0.9.4.post1)\n",
"schema (0.4.0)\n",
"scikit-learn (0.17)\n",
"scipy (0.16.1)\n",
"seaborn (0.7.0.dev0)\n",
"setuptools (18.7.1)\n",
"setuptools-git (1.1)\n",
"simplegeneric (0.8.1)\n",
"simplejson (3.8.1)\n",
"six (1.10.0)\n",
"sklearn (0.0)\n",
"snakemake (3.6.0)\n",
"snowballstemmer (1.2.1)\n",
"Sphinx (1.3.1)\n",
"sphinx-rtd-theme (0.1.9)\n",
"spyder (3.0.0.dev0)\n",
"SQLAlchemy (1.0.9)\n",
"sqlite-bro (0.8.10)\n",
"sqlparse (0.1.18)\n",
"statsmodels (0.6.1)\n",
"tables (3.2.2)\n",
"teslacrack (0.4.0, d:\\work\\teslacrack.git)\n",
"toolz (0.7.4)\n",
"tornado (4.3)\n",
"tqdm (3.8.0)\n",
"traitlets (4.0.0)\n",
"twine (1.6.5)\n",
"utilitybelt (0.2.6)\n",
"wcwidth (0.1.5)\n",
"wheel (0.26.0)\n",
"winpython (1.3)\n",
"wrapt (1.10.5)\n",
"xlrd (0.9.4)\n",
"XlsxWriter (0.8.4)\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"stef=\"\"\"\n",
"adodbapi (2.6.0.7)\n",
"alabaster (0.7.6)\n",
"asteval (0.9.5)\n",
"astroid (1.4.1)\n",
"astroML (0.3)\n",
"Babel (2.1.1)\n",
"backports-abc (0.4)\n",
"baresql (0.7.3)\n",
"bcolz (0.12.1)\n",
"beautifulsoup4 (4.4.1)\n",
"blaze (0.8.3)\n",
"blosc (1.2.8)\n",
"bloscpack (0.9.0)\n",
"bokeh (0.10.0)\n",
"Bottleneck (1.0.0)\n",
"bqplot (0.5.0)\n",
"brewer2mpl (1.4.1)\n",
"castra (0.1.6)\n",
"certifi (2015.11.20.1)\n",
"cffi (1.3.1)\n",
"click (6.2)\n",
"cloudpickle (0.1.1)\n",
"colorama (0.3.3)\n",
"comtypes (1.1.2)\n",
"cvxopt (1.1.7)\n",
"cx-Freeze (4.3.4)\n",
"cycler (0.9.0)\n",
"cyordereddict (0.2.2)\n",
"Cython (0.23.4)\n",
"cytoolz (0.7.4)\n",
"dask (0.7.5)\n",
"datashape (0.5.0)\n",
"db.py (0.4.4)\n",
"decorator (4.0.6)\n",
"dill (0.2.4)\n",
"docopt (0.6.2)\n",
"docutils (0.12)\n",
"doit (0.29.0)\n",
"easygui (0.97.4)\n",
"emcee (2.1.0)\n",
"Flask (0.10.1)\n",
"formlayout (1.1.0)\n",
"future (0.15.2)\n",
"graphviz (0.4.9)\n",
"greenlet (0.4.9)\n",
"guidata (1.7.4)\n",
"guiqwt (3.0.1)\n",
"h5py (2.5.0)\n",
"holoviews (1.4.0)\n",
"html5lib (0.9999999)\n",
"husl (4.0.3)\n",
"ipykernel (4.2.1)\n",
"ipyparallel (4.1.0)\n",
"ipython (4.0.1)\n",
"ipython-genutils (0.1.0)\n",
"ipython-sql (0.3.7.1)\n",
"ipywidgets (4.1.1)\n",
"itsdangerous (0.24)\n",
"jedi (0.8.1)\n",
"Jinja2 (2.8)\n",
"joblib (0.9.3)\n",
"jsonschema (2.5.1)\n",
"julia (0.1.1.8)\n",
"jupyter (1.0.0)\n",
"jupyter-client (4.1.1)\n",
"jupyter-console (4.0.3)\n",
"jupyter-core (4.0.6)\n",
"Keras (0.3.0)\n",
"lazy-object-proxy (1.2.1)\n",
"llvmlite (0.8.0)\n",
"lmfit (0.9.2)\n",
"locket (0.2.0)\n",
"lxml (3.5.0)\n",
"Markdown (2.6.5)\n",
"MarkupSafe (0.23)\n",
"matplotlib (1.5.0)\n",
"mistune (0.7.1)\n",
"mpld3 (0.2)\n",
"multipledispatch (0.4.8)\n",
"mysql-connector-python (2.0.4)\n",
"nbconvert (4.1.0)\n",
"nbformat (4.0.1)\n",
"netCDF4 (1.2.1)\n",
"networkx (1.10)\n",
"nltk (3.0.5)\n",
"nose (1.3.7)\n",
"notebook (4.0.6)\n",
"numba (0.22.1)\n",
"numexpr (2.4.6)\n",
"numpy (1.9.3)\n",
"numpydoc (0.5)\n",
"oct2py (3.3.3)\n",
"odo (0.3.4)\n",
"openpyxl (1.8.6)\n",
"pandalone (0.1.9)\n",
"pandas (0.17.1)\n",
"pandas-datareader (0.2.0)\n",
"param (1.3.2)\n",
"partd (0.3.2)\n",
"path.py (8.1.2)\n",
"patsy (0.4.1)\n",
"pep8 (1.6.2)\n",
"pg8000 (1.10.2)\n",
"pickleshare (0.5)\n",
"Pillow (3.0.0)\n",
"pip (8.0.3)\n",
"pkginfo (1.2.1)\n",
"prettytable (0.7.2)\n",
"prompt-toolkit (0.54)\n",
"psutil (3.3.0)\n",
"py (1.4.31)\n",
"PyAudio (0.2.9)\n",
"pybars3 (0.9.1)\n",
"pycparser (2.14)\n",
"pyflakes (0.9.2)\n",
"Pygments (2.0.2)\n",
"pylint (1.5.1)\n",
"pymc (2.3.6)\n",
"PyMeta3 (0.5.1)\n",
"pymongo (3.1.1)\n",
"pyodbc (3.0.10)\n",
"PyOpenGL (3.1.1b1)\n",
"pyparsing (2.0.6)\n",
"PyQt4 (4.11.4)\n",
"PyQtdesignerplugins (1.1)\n",
"pyqtgraph (0.9.10)\n",
"PyQwt (5.2.1)\n",
"pyreadline (2.1)\n",
"pyserial (2.7)\n",
"pystache (0.5.4)\n",
"pytest (2.8.4)\n",
"python-dateutil (2.4.2)\n",
"python-hdf4 (0.9)\n",
"PythonQwt (0.5.3)\n",
"pytz (2015.7)\n",
"pywin32 (219)\n",
"PyYAML (3.11)\n",
"pyzmq (15.1.0)\n",
"QtAwesome (0.2.0)\n",
"qtconsole (4.1.1)\n",
"QtPy (0.1.2)\n",
"redis (2.10.5)\n",
"regex (2016.1.10)\n",
"requests (2.8.1)\n",
"requests-toolbelt (0.5.0)\n",
"rope-py3k (0.9.4.post1)\n",
"rpy2 (2.7.4)\n",
"Rx (1.2.4)\n",
"schema (0.4.0)\n",
"scikit-image (0.11.3)\n",
"scikit-learn (0.17)\n",
"scilab2py (0.6)\n",
"scipy (0.16.1)\n",
"seaborn (0.7.0.dev0)\n",
"setuptools (18.7.1)\n",
"setuptools-git (1.1)\n",
"simplegeneric (0.8.1)\n",
"simplejson (3.8.1)\n",
"six (1.10.0)\n",
"sklearn (0.0)\n",
"snowballstemmer (1.2.0)\n",
"Sphinx (1.3.3)\n",
"sphinx-rtd-theme (0.1.9)\n",
"spyder (3.0.0.dev0)\n",
"SQLAlchemy (1.0.9)\n",
"sqlite-bro (0.8.10)\n",
"sqlparse (0.1.18)\n",
"statsmodels (0.6.1)\n",
"sympy (0.7.6.1)\n",
"tables (3.2.2)\n",
"Theano (0.7.0)\n",
"toolz (0.7.4)\n",
"tornado (4.3)\n",
"tqdm (3.8.0)\n",
"traitlets (4.0.0)\n",
"twine (1.6.4)\n",
"twitter (1.17.1)\n",
"virtualenv (14.0.1)\n",
"ViTables (2.1)\n",
"wcwidth (0.1.5)\n",
"Werkzeug (0.11.2)\n",
"wheel (0.26.0)\n",
"winpython (1.3)\n",
"wltp (0.0.9-alpha.2-gears-n-min-all, d:\\work\\wltp.git)\n",
"wrapt (1.10.5)\n",
"xlrd (0.9.4)\n",
"XlsxWriter (0.7.7)\n",
"xlwings (0.2.3)\n",
"xray (0.6.1)\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"vinc=\"\"\"\n",
"labaster (0.7.7)\n",
"anaconda-client (1.1.0)\n",
"argcomplete (1.0.0)\n",
"args (0.1.0)\n",
"asteval (0.9.5)\n",
"astropy (1.0.5)\n",
"Babel (2.2.0)\n",
"beautifulsoup4 (4.4.1)\n",
"bitarray (0.8.1)\n",
"blaze (0.8.3)\n",
"bokeh (0.10.0)\n",
"boto (2.38.0)\n",
"cachetools (1.1.5)\n",
"cffi (1.2.1)\n",
"click (6.2)\n",
"clint (0.5.1)\n",
"cloudpickle (0.2.1)\n",
"clyent (0.4.0)\n",
"colorama (0.3.6)\n",
"comtypes (1.1.2)\n",
"conda (4.0.5)\n",
"conda-build (1.18.1)\n",
"conda-env (2.4.5)\n",
"configobj (5.0.6)\n",
"cryptography (1.0.1)\n",
"cycler (0.10.0)\n",
"Cython (0.23.4)\n",
"cytoolz (0.7.4)\n",
"datashape (0.4.7)\n",
"ddt (1.0.1)\n",
"decorator (4.0.9)\n",
"dill (0.2.4)\n",
"docopt (0.6.2)\n",
"docutils (0.12)\n",
"doit (0.29.0)\n",
"easygui (0.97.4)\n",
"fastcache (1.0.2)\n",
"Flask (0.10.1)\n",
"future (0.15.2)\n",
"graphviz (0.4.10)\n",
"greenlet (0.4.9)\n",
"h5py (2.5.0)\n",
"idna (2.0)\n",
"ipykernel (4.1.1)\n",
"ipython (4.0.0)\n",
"ipython-genutils (0.1.0)\n",
"ipywidgets (4.1.0)\n",
"itsdangerous (0.24)\n",
"jdcal (1.0)\n",
"jedi (0.9.0)\n",
"Jinja2 (2.8)\n",
"jsonschema (2.5.1)\n",
"jupyter (1.0.0)\n",
"jupyter-client (4.1.1)\n",
"jupyter-console (4.0.3)\n",
"jupyter-core (4.0.6)\n",
"lmfit (0.9.2)\n",
"lxml (3.4.4)\n",
"MarkupSafe (0.23)\n",
"matplotlib (1.5.1)\n",
"menuinst (1.3.2)\n",
"mistune (0.7.1)\n",
"mpld3 (0.2)\n",
"multipledispatch (0.4.8)\n",
"nbconvert (4.0.0)\n",
"nbformat (4.0.1)\n",
"networkx (1.11)\n",
"nltk (3.1)\n",
"nose (1.3.7)\n",
"notebook (4.0.6)\n",
"numexpr (2.4.4)\n",
"numpy (1.10.4)\n",
"odo (0.3.4)\n",
"openpyxl (1.8.6)\n",
"pandalone (0.1.9)\n",
"pandas (0.17.1)\n",
"path.py (0.0.0)\n",
"patsy (0.4.0)\n",
"pep8 (1.6.2)\n",
"pickleshare (0.5)\n",
"Pillow (3.1.1)\n",
"pip (8.1.0)\n",
"ply (3.8)\n",
"polyline (1.1)\n",
"psutil (3.2.2)\n",
"py (1.4.30)\n",
"pyasn1 (0.1.9)\n",
"pycosat (0.6.1)\n",
"pycparser (2.14)\n",
"pycrypto (2.6.1)\n",
"pycurl (7.19.5.1)\n",
"pyflakes (1.0.0)\n",
"Pygments (2.1)\n",
"pyOpenSSL (0.15.1)\n",
"pyparsing (2.1.0)\n",
"pypiwin32 (219)\n",
"pyreadline (2.1)\n",
"pytest (2.8.1)\n",
"python-dateutil (2.5.0)\n",
"pytz (2015.7)\n",
"pywin32 (219)\n",
"PyYAML (3.11)\n",
"pyzmq (14.7.0)\n",
"qtconsole (4.1.0)\n",
"regex (2016.3.2)\n",
"requests (2.9.1)\n",
"rope-py3k (0.9.4.post1)\n",
"schema (0.4.0)\n",
"scikit-image (0.11.3)\n",
"scikit-learn (0.17.1)\n",
"scipy (0.16.1)\n",
"setuptools (20.2.2)\n",
"simplegeneric (0.8.1)\n",
"six (1.8.0)\n",
"sklearn (0.0)\n",
"snowballstemmer (1.2.1)\n",
"sockjs-tornado (1.0.1)\n",
"Sphinx (1.3.1)\n",
"sphinx-rtd-theme (0.1.9)\n",
"spyder (2.3.7)\n",
"SQLAlchemy (1.0.9)\n",
"statsmodels (0.6.1)\n",
"sympy (0.7.6.1)\n",
"tables (3.2.2)\n",
"toolz (0.7.4)\n",
"tornado (4.2.1)\n",
"tqdm (3.8.0)\n",
"traitlets (4.0.0)\n",
"ujson (1.33)\n",
"unicodecsv (0.14.1)\n",
"Werkzeug (0.10.4)\n",
"wheel (0.29.0)\n",
"xlrd (0.9.4)\n",
"XlsxWriter (0.8.4)\n",
"xlwings (0.4.1)\n",
"xlwt (1.0.0)\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"gfon=\"\"\"\n",
"alabaster (0.7.7)\n",
"asteval (0.9.5)\n",
"astroid (1.4.1)\n",
"Babel (2.2.0)\n",
"backports-abc (0.4)\n",
"baresql (0.7.3)\n",
"beautifulsoup4 (4.4.1)\n",
"cloudpickle (0.1.1)\n",
"co2mpas (1.1.1)\n",
"colorama (0.3.6)\n",
"cycler (0.9.0)\n",
"db.py (0.4.4)\n",
"decorator (4.0.6)\n",
"dill (0.2.4)\n",
"docopt (0.6.2)\n",
"docutils (0.12)\n",
"doit (0.29.0)\n",
"easygui (0.97.4)\n",
"formlayout (1.1.0)\n",
"future (0.15.2)\n",
"graphviz (0.4.9)\n",
"guidata (1.7.4)\n",
"guiqwt (3.0.1)\n",
"h5py (2.5.0)\n",
"html5lib (0.9999999)\n",
"ipykernel (4.2.1)\n",
"ipyparallel (4.1.0)\n",
"ipython (4.0.1)\n",
"ipython-genutils (0.1.0)\n",
"ipython-sql (0.3.7.1)\n",
"ipywidgets (4.1.1)\n",
"jedi (0.8.1)\n",
"Jinja2 (2.8)\n",
"jsonschema (2.5.1)\n",
"jupyter (1.0.0)\n",
"jupyter-client (4.1.1)\n",
"jupyter-console (4.0.3)\n",
"jupyter-core (4.0.6)\n",
"lazy-object-proxy (1.2.1)\n",
"lmfit (0.9.2)\n",
"MarkupSafe (0.23)\n",
"matplotlib (1.5.0)\n",
"mistune (0.7.1)\n",
"mpld3 (0.2)\n",
"nbconvert (4.1.0)\n",
"nbformat (4.0.1)\n",
"networkx (1.11)\n",
"notebook (4.0.6)\n",
"numexpr (2.4.6)\n",
"numpy (1.9.3)\n",
"openpyxl (1.8.6)\n",
"pandalone (0.1.9)\n",
"pandas (0.17.1)\n",
"pandas-datareader (0.2.0)\n",
"path.py (8.1.2)\n",
"patsy (0.4.1)\n",
"pep8 (1.6.2)\n",
"pickleshare (0.5)\n",
"Pillow (3.0.0)\n",
"pip (7.1.2)\n",
"prettytable (0.7.2)\n",
"prompt-toolkit (0.54)\n",
"psutil (3.3.0)\n",
"pybars3 (0.9.1)\n",
"pyflakes (0.9.2)\n",
"Pygments (2.0.2)\n",
"pylint (1.5.1)\n",
"PyMeta3 (0.5.1)\n",
"pyodbc (3.0.10)\n",
"pyparsing (2.0.6)\n",
"pypiwin32 (219)\n",
"pyqtgraph (0.9.10)\n",
"pyreadline (2.1)\n",
"python-dateutil (2.4.2)\n",
"PythonQwt (0.5.3)\n",
"pytz (2015.7)\n",
"PyYAML (3.11)\n",
"pyzmq (15.1.0)\n",
"QtAwesome (0.2.0)\n",
"qtconsole (4.1.1)\n",
"QtPy (0.1.2)\n",
"regex (2016.1.10)\n",
"requests (2.8.1)\n",
"rope-py3k (0.9.4.post1)\n",
"schema (0.4.0)\n",
"scikit-learn (0.17)\n",
"scipy (0.16.1)\n",
"seaborn (0.7.0.dev0)\n",
"setuptools (18.7.1)\n",
"setuptools-git (1.1)\n",
"simplegeneric (0.8.1)\n",
"simplejson (3.8.1)\n",
"six (1.10.0)\n",
"sklearn (0.0)\n",
"snakemake (3.5.5)\n",
"snowballstemmer (1.2.1)\n",
"Sphinx (1.3.5)\n",
"sphinx-rtd-theme (0.1.9)\n",
"spyder (3.0.0.dev0)\n",
"SQLAlchemy (1.0.9)\n",
"sqlite-bro (0.8.10)\n",
"sqlparse (0.1.18)\n",
"statsmodels (0.6.1)\n",
"tables (3.2.2)\n",
"toolz (0.7.4)\n",
"tornado (4.3)\n",
"tqdm (3.8.0)\n",
"traitlets (4.0.0)\n",
"virtualenv (14.0.5)\n",
"wcwidth (0.1.5)\n",
"wheel (0.26.0)\n",
"winpython (1.3)\n",
"wrapt (1.10.5)\n",
"xlrd (0.9.4)\n",
"XlsxWriter (0.8.4)\n",
"\"\"\""
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"## Mark `name` DF-property as persistent,\n",
"# and use it to build hierarchical dfs.\n",
"#\n",
"pd.DataFrame._metadata=['name']\n",
"def concat_levels(dfs, name=None, keys=None, verify_integrity=True, **kws):\n",
" \"\"\"\n",
" Concatenates dataframes/series as a hierarchical-df with the new level made from the `name` property on each df in `dfs`.\n",
" \n",
" :param list dfs: must contain *named* dataframes and series or `keys` specified\n",
" :param list keys: a list with one name for each df, when missing, retrieved from ``df.name``\n",
" :param name: the `name` for the result df\n",
" :param names: the names of the resulting levels (see )\n",
" \"\"\"\n",
" if keys is None:\n",
" keys=[df.name for df in dfs]\n",
" hdf = pd.concat(dfs, keys=[df.name for df in dfs], verify_integrity=verify_integrity, **kws)\n",
" if name:\n",
" hdf.name = name\n",
" return hdf\n"
]
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import io\n",
"from collections import OrderedDict\n",
"\n",
"def parse_deps(name, txt):\n",
" lines = io.StringIO(txt).readlines()\n",
" lines = (l.strip() for l in lines)\n",
" lines = (l for l in lines if l)\n",
" df = pd.DataFrame(lines, columns=['raw'])\n",
" df = pd.concat((df, df['raw'].str.extract(r'^([^( ]+) \\(([^)]+)\\)')), axis=1)\n",
" df.columns = ['raw', 'lib', 'ver']\n",
" df = df.set_index('lib')\n",
" df.name = name\n",
" return df\n",
"\n",
"txts = OrderedDict([\n",
" ('ank', ank), \n",
" ('stef', stef),\n",
" ('vinc', vinc),\n",
" ('gfon', gfon),\n",
"])\n",
"dfs = [parse_deps(k, v) for k,v in txts.items()]\n",
"df = concat_levels(dfs, axis=1)\n",
"df = df.dropna(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"D:\\Apps\\WinPython-64bit-3.4.3.7Slim\\python-3.4.3.amd64\\lib\\site-packages\\ipykernel\\__main__.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" app.launch_new_instance()\n"
]
}
],
"source": [
"dfv = df.loc[:, (slice(None), 'ver')]\n",
"dfv.columns = txts.keys()\n",
"dfv['SAME'] = dfv.apply(lambda r: (r == r[0]).all(), axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ank</th>\n",
" <th>stef</th>\n",
" <th>vinc</th>\n",
" <th>gfon</th>\n",
" <th>SAME</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Babel</th>\n",
" <td>2.2.0</td>\n",
" <td>2.1.1</td>\n",
" <td>2.2.0</td>\n",
" <td>2.2.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pillow</th>\n",
" <td>3.0.0</td>\n",
" <td>3.0.0</td>\n",
" <td>3.1.1</td>\n",
" <td>3.0.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pygments</th>\n",
" <td>2.0.2</td>\n",
" <td>2.0.2</td>\n",
" <td>2.1</td>\n",
" <td>2.0.2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sphinx</th>\n",
" <td>1.3.1</td>\n",
" <td>1.3.3</td>\n",
" <td>1.3.1</td>\n",
" <td>1.3.5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>XlsxWriter</th>\n",
" <td>0.8.4</td>\n",
" <td>0.7.7</td>\n",
" <td>0.8.4</td>\n",
" <td>0.8.4</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>cloudpickle</th>\n",
" <td>0.1.1</td>\n",
" <td>0.1.1</td>\n",
" <td>0.2.1</td>\n",
" <td>0.1.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>colorama</th>\n",
" <td>0.3.6</td>\n",
" <td>0.3.3</td>\n",
" <td>0.3.6</td>\n",
" <td>0.3.6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>cycler</th>\n",
" <td>0.9.0</td>\n",
" <td>0.9.0</td>\n",
" <td>0.10.0</td>\n",
" <td>0.9.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>decorator</th>\n",
" <td>4.0.6</td>\n",
" <td>4.0.6</td>\n",
" <td>4.0.9</td>\n",
" <td>4.0.6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>graphviz</th>\n",
" <td>0.4.9</td>\n",
" <td>0.4.9</td>\n",
" <td>0.4.10</td>\n",
" <td>0.4.9</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ipykernel</th>\n",
" <td>4.2.1</td>\n",
" <td>4.2.1</td>\n",
" <td>4.1.1</td>\n",
" <td>4.2.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ipython</th>\n",
" <td>4.0.1</td>\n",
" <td>4.0.1</td>\n",
" <td>4.0.0</td>\n",
" <td>4.0.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ipywidgets</th>\n",
" <td>4.1.1</td>\n",
" <td>4.1.1</td>\n",
" <td>4.1.0</td>\n",
" <td>4.1.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>jedi</th>\n",
" <td>0.8.1</td>\n",
" <td>0.8.1</td>\n",
" <td>0.9.0</td>\n",
" <td>0.8.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>matplotlib</th>\n",
" <td>1.5.0</td>\n",
" <td>1.5.0</td>\n",
" <td>1.5.1</td>\n",
" <td>1.5.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>nbconvert</th>\n",
" <td>4.1.0</td>\n",
" <td>4.1.0</td>\n",
" <td>4.0.0</td>\n",
" <td>4.1.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>networkx</th>\n",
" <td>1.10</td>\n",
" <td>1.10</td>\n",
" <td>1.11</td>\n",
" <td>1.11</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>numexpr</th>\n",
" <td>2.4.6</td>\n",
" <td>2.4.6</td>\n",
" <td>2.4.4</td>\n",
" <td>2.4.6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>numpy</th>\n",
" <td>1.9.3</td>\n",
" <td>1.9.3</td>\n",
" <td>1.10.4</td>\n",
" <td>1.9.3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>path.py</th>\n",
" <td>8.1.2</td>\n",
" <td>8.1.2</td>\n",
" <td>0.0.0</td>\n",
" <td>8.1.2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>patsy</th>\n",
" <td>0.4.1</td>\n",
" <td>0.4.1</td>\n",
" <td>0.4.0</td>\n",
" <td>0.4.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>pip</th>\n",
" <td>8.1.0</td>\n",
" <td>8.0.3</td>\n",
" <td>8.1.0</td>\n",
" <td>7.1.2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>psutil</th>\n",
" <td>3.3.0</td>\n",
" <td>3.3.0</td>\n",
" <td>3.2.2</td>\n",
" <td>3.3.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>pyflakes</th>\n",
" <td>0.9.2</td>\n",
" <td>0.9.2</td>\n",
" <td>1.0.0</td>\n",
" <td>0.9.2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>pyparsing</th>\n",
" <td>2.0.6</td>\n",
" <td>2.0.6</td>\n",
" <td>2.1.0</td>\n",
" <td>2.0.6</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>python-dateutil</th>\n",
" <td>2.4.2</td>\n",
" <td>2.4.2</td>\n",
" <td>2.5.0</td>\n",
" <td>2.4.2</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>pyzmq</th>\n",
" <td>15.1.0</td>\n",
" <td>15.1.0</td>\n",
" <td>14.7.0</td>\n",
" <td>15.1.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>qtconsole</th>\n",
" <td>4.1.1</td>\n",
" <td>4.1.1</td>\n",
" <td>4.1.0</td>\n",
" <td>4.1.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>regex</th>\n",
" <td>2016.1.10</td>\n",
" <td>2016.1.10</td>\n",
" <td>2016.3.2</td>\n",
" <td>2016.1.10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>requests</th>\n",
" <td>2.8.1</td>\n",
" <td>2.8.1</td>\n",
" <td>2.9.1</td>\n",
" <td>2.8.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>scikit-learn</th>\n",
" <td>0.17</td>\n",
" <td>0.17</td>\n",
" <td>0.17.1</td>\n",
" <td>0.17</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>setuptools</th>\n",
" <td>18.7.1</td>\n",
" <td>18.7.1</td>\n",
" <td>20.2.2</td>\n",
" <td>18.7.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>six</th>\n",
" <td>1.10.0</td>\n",
" <td>1.10.0</td>\n",
" <td>1.8.0</td>\n",
" <td>1.10.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>snowballstemmer</th>\n",
" <td>1.2.1</td>\n",
" <td>1.2.0</td>\n",
" <td>1.2.1</td>\n",
" <td>1.2.1</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>spyder</th>\n",
" <td>3.0.0.dev0</td>\n",
" <td>3.0.0.dev0</td>\n",
" <td>2.3.7</td>\n",
" <td>3.0.0.dev0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>tornado</th>\n",
" <td>4.3</td>\n",
" <td>4.3</td>\n",
" <td>4.2.1</td>\n",
" <td>4.3</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>wheel</th>\n",
" <td>0.26.0</td>\n",
" <td>0.26.0</td>\n",
" <td>0.29.0</td>\n",
" <td>0.26.0</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ank stef vinc gfon SAME\n",
"Babel 2.2.0 2.1.1 2.2.0 2.2.0 False\n",
"Pillow 3.0.0 3.0.0 3.1.1 3.0.0 False\n",
"Pygments 2.0.2 2.0.2 2.1 2.0.2 False\n",
"Sphinx 1.3.1 1.3.3 1.3.1 1.3.5 False\n",
"XlsxWriter 0.8.4 0.7.7 0.8.4 0.8.4 False\n",
"cloudpickle 0.1.1 0.1.1 0.2.1 0.1.1 False\n",
"colorama 0.3.6 0.3.3 0.3.6 0.3.6 False\n",
"cycler 0.9.0 0.9.0 0.10.0 0.9.0 False\n",
"decorator 4.0.6 4.0.6 4.0.9 4.0.6 False\n",
"graphviz 0.4.9 0.4.9 0.4.10 0.4.9 False\n",
"ipykernel 4.2.1 4.2.1 4.1.1 4.2.1 False\n",
"ipython 4.0.1 4.0.1 4.0.0 4.0.1 False\n",
"ipywidgets 4.1.1 4.1.1 4.1.0 4.1.1 False\n",
"jedi 0.8.1 0.8.1 0.9.0 0.8.1 False\n",
"matplotlib 1.5.0 1.5.0 1.5.1 1.5.0 False\n",
"nbconvert 4.1.0 4.1.0 4.0.0 4.1.0 False\n",
"networkx 1.10 1.10 1.11 1.11 False\n",
"numexpr 2.4.6 2.4.6 2.4.4 2.4.6 False\n",
"numpy 1.9.3 1.9.3 1.10.4 1.9.3 False\n",
"path.py 8.1.2 8.1.2 0.0.0 8.1.2 False\n",
"patsy 0.4.1 0.4.1 0.4.0 0.4.1 False\n",
"pip 8.1.0 8.0.3 8.1.0 7.1.2 False\n",
"psutil 3.3.0 3.3.0 3.2.2 3.3.0 False\n",
"pyflakes 0.9.2 0.9.2 1.0.0 0.9.2 False\n",
"pyparsing 2.0.6 2.0.6 2.1.0 2.0.6 False\n",
"python-dateutil 2.4.2 2.4.2 2.5.0 2.4.2 False\n",
"pyzmq 15.1.0 15.1.0 14.7.0 15.1.0 False\n",
"qtconsole 4.1.1 4.1.1 4.1.0 4.1.1 False\n",
"regex 2016.1.10 2016.1.10 2016.3.2 2016.1.10 False\n",
"requests 2.8.1 2.8.1 2.9.1 2.8.1 False\n",
"scikit-learn 0.17 0.17 0.17.1 0.17 False\n",
"setuptools 18.7.1 18.7.1 20.2.2 18.7.1 False\n",
"six 1.10.0 1.10.0 1.8.0 1.10.0 False\n",
"snowballstemmer 1.2.1 1.2.0 1.2.1 1.2.1 False\n",
"spyder 3.0.0.dev0 3.0.0.dev0 2.3.7 3.0.0.dev0 False\n",
"tornado 4.3 4.3 4.2.1 4.3 False\n",
"wheel 0.26.0 0.26.0 0.29.0 0.26.0 False"
]
},
"execution_count": 122,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfv[~dfv['SAME']]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment