{
"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",
" name | \n",
" reports | \n",
" year | \n",
"
\n",
" \n",
" \n",
" \n",
" Cochice | \n",
" Jason | \n",
" 4 | \n",
" 2012 | \n",
"
\n",
" \n",
" Pima | \n",
" Molly | \n",
" 24 | \n",
" 2012 | \n",
"
\n",
" \n",
" Santa Cruz | \n",
" Tina | \n",
" 31 | \n",
" 2013 | \n",
"
\n",
" \n",
" Maricopa | \n",
" Jake | \n",
" 2 | \n",
" 2014 | \n",
"
\n",
" \n",
" Yuma | \n",
" Amy | \n",
" 3 | \n",
" 2014 | \n",
"
\n",
" \n",
"
\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",
" name | \n",
" reports | \n",
" year | \n",
" next_year | \n",
" previous_year | \n",
"
\n",
" \n",
" \n",
" \n",
" Cochice | \n",
" Jason | \n",
" 4 | \n",
" 2012 | \n",
" 2013 | \n",
" 2011 | \n",
"
\n",
" \n",
" Pima | \n",
" Molly | \n",
" 24 | \n",
" 2012 | \n",
" 2013 | \n",
" 2011 | \n",
"
\n",
" \n",
" Santa Cruz | \n",
" Tina | \n",
" 31 | \n",
" 2013 | \n",
" 2014 | \n",
" 2012 | \n",
"
\n",
" \n",
" Maricopa | \n",
" Jake | \n",
" 2 | \n",
" 2014 | \n",
" 2015 | \n",
" 2013 | \n",
"
\n",
" \n",
" Yuma | \n",
" Amy | \n",
" 3 | \n",
" 2014 | \n",
" 2015 | \n",
" 2013 | \n",
"
\n",
" \n",
"
\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",
" name | \n",
" reports | \n",
" year | \n",
" next_year | \n",
" previous_year | \n",
"
\n",
" \n",
" \n",
" \n",
" Cochice | \n",
" Jason | \n",
" 4 | \n",
" 2012 | \n",
" 2013 | \n",
" 2011 | \n",
"
\n",
" \n",
" Pima | \n",
" Molly | \n",
" 24 | \n",
" 2012 | \n",
" 2013 | \n",
" 2011 | \n",
"
\n",
" \n",
" Santa Cruz | \n",
" Tina | \n",
" 31 | \n",
" 2013 | \n",
" 2014 | \n",
" 2012 | \n",
"
\n",
" \n",
" Maricopa | \n",
" Jake | \n",
" 2 | \n",
" 2014 | \n",
" 2015 | \n",
" 2013 | \n",
"
\n",
" \n",
" Yuma | \n",
" Amy | \n",
" 3 | \n",
" 2014 | \n",
" 2015 | \n",
" 2013 | \n",
"
\n",
" \n",
"
\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": {}
}
]
}