* **All methods operate on columns by default. Pass `'axis=1'` to process the rows instead.**
* **Fifth result's columns are indexed with a multi-index. This means we need a tuple of column keys to specify a column: `'<DF>.loc[row_key, (col_key_1, col_key_2)]'`.**
<li><strong>Methods ffill(), interpolate(), fillna() and dropna() accept <codeclass="python hljs"><spanclass="hljs-string">'inplace=True'</span></code>.</strong></li>
<li><strong>Last result has a multi-index. Use <codeclass="python hljs"><spanclass="hljs-string">'<S>[key_1, key_2]'</span></code> to get its values.</strong></li>
</ul>
<div><h3id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><codeclass="python language-python hljs"><spanclass="hljs-meta">>>></span>l = pd.DataFrame([[<spanclass="hljs-number">1</span>, <spanclass="hljs-number">2</span>], [<spanclass="hljs-number">3</span>, <spanclass="hljs-number">4</span>]], index=[<spanclass="hljs-string">'a'</span>, <spanclass="hljs-string">'b'</span>], columns=[<spanclass="hljs-string">'x'</span>, <spanclass="hljs-string">'y'</span>]); l
<div><h3id="dataframe">DataFrame</h3><p><strong>Table with labeled rows and columns.</strong></p><pre><codeclass="python language-python hljs"><spanclass="hljs-meta">>>></span>df = pd.DataFrame([[<spanclass="hljs-number">1</span>, <spanclass="hljs-number">2</span>], [<spanclass="hljs-number">3</span>, <spanclass="hljs-number">4</span>]], index=[<spanclass="hljs-string">'a'</span>, <spanclass="hljs-string">'b'</span>], columns=[<spanclass="hljs-string">'x'</span>, <spanclass="hljs-string">'y'</span>]); df
x y
a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span>
b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span>
@ -2647,7 +2647,7 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
<DF> = <DF>[row_bools] <spanclass="hljs-comment"># Keeps rows as specified by bools.</span>
<DF> = <DF>[<S_of_bools>]<spanclass="hljs-comment"># Filters rows. For example `df[df.x > 1]`.</span>
<DF> = <DF>[<DF_of_bools>] <spanclass="hljs-comment"># Assigns NaN to items that are False in bools.</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF> = <DF>><el/S/DF><spanclass="hljs-comment"># Returns DF of bools. S is treated as a row.</span>
@ -2660,62 +2660,62 @@ b <span class="hljs-number">3</span> <span class="hljs-number">4</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF> = <DF>.head/tail/sample(<int>) <spanclass="hljs-comment"># Returns first, last, or random n rows.</span>
<DF> = <DF>.describe() <spanclass="hljs-comment"># Describes columns. Also info(), corr(), shape.</span>
<DF> = <DF>.query(<spanclass="hljs-string">'<query>'</span>) <spanclass="hljs-comment"># Filters rows with e.g. 'col_1 == val_1 and …'.</span>
<DF> = <DF>.query(<spanclass="hljs-string">'<query>'</span>) <spanclass="hljs-comment"># Filters rows. For example `df.query('x > 1')`.</span>
</code></pre>
<pre><codeclass="python language-python hljs"><DF>.plot.line/area/bar/scatter(x=col_key, …) <spanclass="hljs-comment"># `y=col_key/s`. Also hist/box(by=col_key).</span>
plt.show() <spanclass="hljs-comment"># Displays the plot. Also plt.savefig(<path>).</span>
┃ l.join(r, lsuffix=<spanclass="hljs-string">'l'</span>, │ x yl yr z │ │ x yl yr z │ Merges on row keys. ┃
┃ rsuffix=<spanclass="hljs-string">'r'</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x yl yr z │ <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ Uses <spanclass="hljs-string">'left'</span> by default. ┃
┃ how=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ If r is a Series, it is ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
┃ pd.concat([l, r], │ x y y z │ │ │ Adds columns at the ┃
┃ axis=<spanclass="hljs-number">1</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x y y z │ │ right end. Uses <spanclass="hljs-string">'outer'</span> ┃
┃ join=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ │ by default. A Series is ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
┃ df.join(df_2, │ x yl yr z │ │ x yl yr z │ Merges on row keys. ┃
┃ lsuffix=<spanclass="hljs-string">'l'</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x yl yr z │ <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ Uses <spanclass="hljs-string">'left'</span> by default. ┃
┃ rsuffix=<spanclass="hljs-string">'r'</span>, │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ If r is a Series, it is ┃
┃ how=…) │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
┃ pd.concat([df, df_2], │ x y y z │ │ │ Adds columns at the ┃
┃ axis=<spanclass="hljs-number">1</span>, │ a <spanclass="hljs-number">1</span><spanclass="hljs-number">2</span> . . │ x y y z │ │ right end. Uses <spanclass="hljs-string">'outer'</span> ┃
┃ join=…) │ b <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ <spanclass="hljs-number">3</span><spanclass="hljs-number">4</span><spanclass="hljs-number">4</span><spanclass="hljs-number">5</span> │ │ by default. A Series is ┃
┃ │ c . . <spanclass="hljs-number">6</span><spanclass="hljs-number">7</span> │ │ │ treated as a column. ┃
┃ l.transform(…) │ a <spanclass="hljs-number">1.0</span><spanclass="hljs-number">1.0</span> │ a <spanclass="hljs-number">1.0</span><spanclass="hljs-number">1.0</span> │ a <spanclass="hljs-number">1.0</span> ┃
┃ │ b <spanclass="hljs-number">2.0</span><spanclass="hljs-number">2.0</span> │ b <spanclass="hljs-number">2.0</span><spanclass="hljs-number">2.0</span> │ b <spanclass="hljs-number">2.0</span> ┃
┃ df.transform(…) │ a <spanclass="hljs-number">1.0</span><spanclass="hljs-number">1.0</span> │ a <spanclass="hljs-number">1.0</span><spanclass="hljs-number">1.0</span> │ a <spanclass="hljs-number">1.0</span> ┃
┃ │ b <spanclass="hljs-number">2.0</span><spanclass="hljs-number">2.0</span> │ b <spanclass="hljs-number">2.0</span><spanclass="hljs-number">2.0</span> │ b <spanclass="hljs-number">2.0</span> ┃