|
3 | 3 | Parentheses vs. Square Brackets in Python and pandas
|
4 | 4 | ====================================================
|
5 | 5 |
|
6 |
| -Python and pandas use both **parentheses** ``()`` and **square brackets** ``[]``, but these have separate and important roles. Understanding their differences is essential for writing correct Python and pandas code. |
7 |
| - |
8 |
| -Overview of Bracket Usage |
9 |
| -------------------------- |
10 |
| - |
11 |
| -+------------------------------------+-------------------------------+------------------------------+ |
12 |
| -| Context | Parentheses ``()`` | Square Brackets ``[]`` | |
13 |
| -+====================================+===============================+==============================+ |
14 |
| -| Function and method calls | Yes: ``df.mean()`` | No | |
15 |
| -+------------------------------------+-------------------------------+------------------------------+ |
16 |
| -| Tuple creation | Yes: ``(a, b, c)`` | No | |
17 |
| -+------------------------------------+-------------------------------+------------------------------+ |
18 |
| -| List creation and item access | No | Yes: ``a[0]``, ``[1, 2]`` | |
19 |
| -+------------------------------------+-------------------------------+------------------------------+ |
20 |
| -| Dictionary item access | No | Yes: ``mydict['key']`` | |
21 |
| -+------------------------------------+-------------------------------+------------------------------+ |
22 |
| -| pandas column selection | No | Yes: ``df['A']``, | |
23 |
| -| | | ``df[['A', 'B']]`` | |
24 |
| -+------------------------------------+-------------------------------+------------------------------+ |
25 |
| -| pandas row selection and slicing | No | Yes: ``df[0:5]``, | |
26 |
| -| | | ``df.loc[2]`` | |
27 |
| -+------------------------------------+-------------------------------+------------------------------+ |
28 |
| -| Boolean indexing | No | Yes: ``df[df['col'] > 10]`` | |
29 |
| -+------------------------------------+-------------------------------+------------------------------+ |
30 |
| -| Grouping/logical expressions | Yes: ``(x + y) * z`` | No | |
31 |
| -+------------------------------------+-------------------------------+------------------------------+ |
32 |
| - |
33 |
| -Detailed Explanations and Examples |
34 |
| ----------------------------------- |
35 |
| - |
36 |
| -**Parentheses ``()``** |
37 |
| - |
38 |
| -- Used to *call* functions and methods, enclosing arguments: |
39 |
| - .. code-block:: python |
40 |
| -
|
41 |
| - df.mean() |
42 |
| - print("Hello, world!") |
43 |
| - sum([1, 2, 3]) |
44 |
| -
|
45 |
| -- Used to create *tuples*, which are immutable ordered collections: |
46 |
| - .. code-block:: python |
47 |
| -
|
48 |
| - coordinates = (10, 20) |
49 |
| - empty_tuple = () |
50 |
| -
|
51 |
| -- Used for *grouping expressions* in mathematics and logic: |
52 |
| - .. code-block:: python |
53 |
| -
|
54 |
| - result = (1 + 2) * 3 |
55 |
| - is_valid = (score > 0) and (score < 100) |
56 |
| -
|
57 |
| -- Used to spread Python statements over multiple lines: |
58 |
| - |
59 |
| - .. code-block:: python |
60 |
| -
|
61 |
| - total = ( |
62 |
| - 1 + |
63 |
| - 2 + |
64 |
| - 3 |
65 |
| - ) |
66 |
| -
|
67 |
| -**Square Brackets ``[]``** |
68 |
| - |
69 |
| -- Used to *define* and *access* elements of Python lists: |
70 |
| - .. code-block:: python |
71 |
| -
|
72 |
| - numbers = [1, 2, 3, 4] |
73 |
| - first = numbers[0] |
74 |
| - sub = numbers[1:3] |
75 |
| -
|
76 |
| -- Used to *access* values in dictionaries by key: |
77 |
| - .. code-block:: python |
78 |
| -
|
79 |
| - prices = {'apple': 40, 'banana': 10} |
80 |
| - apple_price = prices['apple'] |
81 |
| -
|
82 |
| -- Used for all kinds of *indexing* and *selection* in pandas DataFrames and Series: |
83 |
| - |
84 |
| - *Single column selection* (returns Series): |
85 |
| - .. code-block:: python |
86 |
| -
|
87 |
| - df['A'] |
88 |
| -
|
89 |
| - *Multiple columns selection* (returns DataFrame): |
90 |
| - .. code-block:: python |
91 |
| -
|
92 |
| - df[['A', 'B']] |
93 |
| -
|
94 |
| - Here, the inner brackets create a Python list of column labels, and the outer brackets are pandas selection syntax. |
95 |
| -
|
96 |
| - *Row selection and slicing*: |
97 |
| - .. code-block:: python |
98 |
| -
|
99 |
| - df[0:2] # selects rows 0 and 1 by integer position |
100 |
| - df.loc[2] # selects row with label/index 2 |
101 |
| - df.iloc[2] # selects row at integer position 2 |
102 |
| -
|
103 |
| - *Boolean indexing (row filtering)*: |
104 |
| - .. code-block:: python |
105 |
| -
|
106 |
| - df[df['A'] > 5] # returns only rows where column 'A' is greater than 5 |
107 |
| -
|
108 |
| -Key Points to Remember |
109 |
| ----------------------- |
110 |
| - |
111 |
| -- **Parentheses** are for function/method calls, tuple creation, grouping, and continuation of statements. |
112 |
| -- **Square brackets** are for creating and accessing lists, dictionary values, slicing sequences, and—critically for pandas—selecting/subsetting columns and rows. |
113 |
| -- In pandas, *single* square brackets select a single column as a Series (``df['A']``), while *double* square brackets select multiple columns as a DataFrame (``df[['A', 'B']]``) because the *inner brackets create a Python list* of column labels. |
114 |
| -- Boolean indexing in pandas always uses square brackets enclosing a boolean Series: ``df[df['A'] > 5]``. |
115 |
| - |
116 |
| -Common Pitfalls |
117 |
| ---------------- |
118 |
| - |
119 |
| -- Attempting to use parentheses for list/tensor/column access or slicing will result in errors. |
120 |
| -- Using single brackets with a list inside (like ``df[['A']]``) still returns a DataFrame, not a Series—bracket count and the type of object inside matters. |
121 |
| -- Remember that method calls (like ``df.mean()`` or ``df.groupby('A')``) always require parentheses, even if there are no arguments. |
122 |
| - |
123 |
| -Example Summary |
124 |
| ---------------- |
125 |
| - |
126 |
| -.. code-block:: python |
127 |
| -
|
128 |
| - import pandas as pd |
129 |
| - df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) |
130 |
| -
|
131 |
| - # Function and method calls |
132 |
| - df.mean() |
133 |
| -
|
134 |
| - # Tuple creation |
135 |
| - t = (1, 2, 3) |
136 |
| -
|
137 |
| - # List creation/access |
138 |
| - mylist = [10, 20, 30] |
139 |
| - first_item = mylist[0] |
140 |
| -
|
141 |
| - # pandas column selection |
142 |
| - df['A'] |
143 |
| - df[['A', 'B']] |
144 |
| -
|
145 |
| - # pandas boolean indexing |
146 |
| - df[df['B'] > 4] |
147 |
| -
|
148 |
| - # Grouping/logical expressions |
149 |
| - selected = (df['A'] > 1) & (df['B'] < 6) |
150 |
| -
|
151 |
| -Getting comfortable with the distinction between parentheses and square brackets is a major milestone for every new pandas user. This understanding leads to correct code and enhanced productivity when working in both core Python and pandas. |
| 6 | +In Python and pandas, parentheses ``()`` and square brackets ``[]`` have distinct uses, which can sometimes be confusing for new users. Parentheses are used to call functions and methods (for example, ``df.mean()``), to group expressions in calculations (such as ``(a + b) * c``), and to create tuples. Square brackets, on the other hand, are used for defining lists and for indexing or selecting data—in both core Python and pandas. For example, ``df['A']`` selects column ``A`` from a DataFrame, and ``df[0:3]`` selects rows by position. In pandas, square brackets are always used when you want to select or filter data, while parentheses are used any time you are calling a method or function. Remember: use ``[]`` for selection or indexing, and ``()`` for function calls and grouping. |
0 commit comments