{ "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", "\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", " \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", "
student_nametest_scoregrades
0 Miller 76 C
1 Jacobson 88 B
2 Ali 84 B-
3 Milner 67 D
4 Cooze 53 Failed
5 Jacon 96 A
6 Ryaner 64 D-
7 Sone 91 A-
8 Sloan 77 C
9 Piger 73 C-
10 Riani 52 Failed
11 AliNaN Failed
\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ " student_name test_score grades\n", "0 Miller 76 C\n", "1 Jacobson 88 B\n", "2 Ali 84 B-\n", "3 Milner 67 D\n", "4 Cooze 53 Failed\n", "5 Jacon 96 A\n", "6 Ryaner 64 D-\n", "7 Sone 91 A-\n", "8 Sloan 77 C\n", "9 Piger 73 C-\n", "10 Riani 52 Failed\n", "11 Ali NaN Failed" ] } ], "prompt_number": 23 } ], "metadata": {} } ] }