{ "metadata": { "name": "", "signature": "sha256:3a8af4bfe2d135c8e914269ca4ab49cd0ed4efd90f6bbd68e255e37a470e840e" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Create A Pandas Column With A For Loop\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 pandas as pd\n", "import numpy as np" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create an example dataframe" ] }, { "cell_type": "code", "collapsed": false, "input": [ "raw_data = {'student_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze', 'Jacon', 'Ryaner', 'Sone', 'Sloan', 'Piger', 'Riani', 'Ali'], \n", " 'test_score': [76, 88, 84, 67, 53, 96, 64, 91, 77, 73, 52, np.NaN]}\n", "df = pd.DataFrame(raw_data, columns = ['student_name', 'test_score'])" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create a function to assign letter grades" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Create a list to store the data\n", "grades = []\n", "\n", "# For each row in the column,\n", "for row in df['test_score']:\n", " # if more than a value,\n", " if row > 95:\n", " # Append a letter grade\n", " grades.append('A')\n", " # else, if more than a value,\n", " elif row > 90:\n", " # Append a letter grade\n", " grades.append('A-')\n", " # else, if more than a value,\n", " elif row > 85:\n", " # Append a letter grade\n", " grades.append('B')\n", " # else, if more than a value,\n", " elif row > 80:\n", " # Append a letter grade\n", " grades.append('B-')\n", " # else, if more than a value,\n", " elif row > 75:\n", " # Append a letter grade\n", " grades.append('C')\n", " # else, if more than a value,\n", " elif row > 70:\n", " # Append a letter grade\n", " grades.append('C-')\n", " # else, if more than a value,\n", " elif row > 65:\n", " # Append a letter grade\n", " grades.append('D')\n", " # else, if more than a value,\n", " elif row > 60:\n", " # Append a letter grade\n", " grades.append('D-')\n", " # otherwise,\n", " else:\n", " # Append a failing grade\n", " grades.append('Failed')\n", " \n", "# Create a column from the list\n", "df['grades'] = grades" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "# View the new dataframe\n", "df" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", " | student_name | \n", "test_score | \n", "grades | \n", "
---|---|---|---|
0 | \n", "Miller | \n", "76 | \n", "C | \n", "
1 | \n", "Jacobson | \n", "88 | \n", "B | \n", "
2 | \n", "Ali | \n", "84 | \n", "B- | \n", "
3 | \n", "Milner | \n", "67 | \n", "D | \n", "
4 | \n", "Cooze | \n", "53 | \n", "Failed | \n", "
5 | \n", "Jacon | \n", "96 | \n", "A | \n", "
6 | \n", "Ryaner | \n", "64 | \n", "D- | \n", "
7 | \n", "Sone | \n", "91 | \n", "A- | \n", "
8 | \n", "Sloan | \n", "77 | \n", "C | \n", "
9 | \n", "Piger | \n", "73 | \n", "C- | \n", "
10 | \n", "Riani | \n", "52 | \n", "Failed | \n", "
11 | \n", "Ali | \n", "NaN | \n", "Failed | \n", "