{ "metadata": { "name": "", "signature": "sha256:709b15d88a623ba80d0ab8716c65ae256c10a527e942af98dec87f1131a36e3a" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using List Comprehensions With Pandas\n", "\n", "- **Author:** [Chris Albon](http://www.chrisalbon.com/), [@ChrisAlbon](https://twitter.com/chrisalbon)\n", "- **Date:** -\n", "- **Repo:** [Python 3 code snippets for data science](https://github.com/chrisalbon/code_py)\n", "- **Note:**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Import modules\n", "import pandas as pd\n", "\n", "# Set ipython's max row display\n", "pd.set_option('display.max_row', 1000)\n", "\n", "# Set iPython's max column width to 50\n", "pd.set_option('display.max_columns', 50)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an example dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], \n", " 'year': [2012, 2012, 2013, 2014, 2014], \n", " 'reports': [4, 24, 31, 2, 3]}\n", "df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])\n", "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namereportsyear
Cochice Jason 4 2012
Pima Molly 24 2012
Santa Cruz Tina 31 2013
Maricopa Jake 2 2014
Yuma Amy 3 2014
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " name reports year\n", "Cochice Jason 4 2012\n", "Pima Molly 24 2012\n", "Santa Cruz Tina 31 2013\n", "Maricopa Jake 2 2014\n", "Yuma Amy 3 2014" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## List Comprehensions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### As a loop" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Create a variable\n", "next_year = []\n", "\n", "# For each row in df.years,\n", "for row in df['year']:\n", " # Add 1 to the row and append it to next_year\n", " next_year.append(row + 1)\n", "\n", "# Create df.next_year\n", "df['next_year'] = next_year\n", "\n", "# View the dataframe\n", "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namereportsyearnext_yearprevious_year
Cochice Jason 4 2012 2013 2011
Pima Molly 24 2012 2013 2011
Santa Cruz Tina 31 2013 2014 2012
Maricopa Jake 2 2014 2015 2013
Yuma Amy 3 2014 2015 2013
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ " name reports year next_year previous_year\n", "Cochice Jason 4 2012 2013 2011\n", "Pima Molly 24 2012 2013 2011\n", "Santa Cruz Tina 31 2013 2014 2012\n", "Maricopa Jake 2 2014 2015 2013\n", "Yuma Amy 3 2014 2015 2013" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### As list comprehension" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Subtract 1 from row, for each row in df.year\n", "df['previous_year'] = [row-1 for row in df['year']]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namereportsyearnext_yearprevious_year
Cochice Jason 4 2012 2013 2011
Pima Molly 24 2012 2013 2011
Santa Cruz Tina 31 2013 2014 2012
Maricopa Jake 2 2014 2015 2013
Yuma Amy 3 2014 2015 2013
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ " name reports year next_year previous_year\n", "Cochice Jason 4 2012 2013 2011\n", "Pima Molly 24 2012 2013 2011\n", "Santa Cruz Tina 31 2013 2014 2012\n", "Maricopa Jake 2 2014 2015 2013\n", "Yuma Amy 3 2014 2015 2013" ] } ], "prompt_number": 13 } ], "metadata": {} } ] }