Skip to content

Commit ada92d7

Browse files
DOC: Clarify parentheses vs. brackets usage (GH#62314) updated
1 parent aa0804f commit ada92d7

File tree

1 file changed

+1
-146
lines changed

1 file changed

+1
-146
lines changed

doc/source/getting_started/intro_tutorials/11_brackets_vs_parenthesis.rst

Lines changed: 1 addition & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -3,149 +3,4 @@
33
Parentheses vs. Square Brackets in Python and pandas
44
====================================================
55

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

Comments
 (0)