Struggling to understand the difference between the 5 examples in the title. Are some use cases for series vs. data frames? When should one be used over the other? Which are equivalent?
1 Answer
df[x]— index a column using variablex. Returnspd.Seriesdf[[x]]— index/slice a single-column DataFrame using variablex. Returnspd.DataFramedf['x']— index a column named 'x'. Returnspd.Seriesdf[['x']]— index/slice a single-column DataFrame having only one column named 'x'. Returnspd.DataFramedf.x— dot accessor notation, equivalent todf['x'](there are, however, limitations on whatxcan be named if dot notation is to be successfully used). Returnspd.Series
With single brackets [...] you may only index a single column out as a Series. With double brackets, [[...]], you may select as many columns as you need, and these columns are returned as part of a new DataFrame.
Setup
df ID x 0 0 0 1 1 15 2 2 0 3 3 0 4 4 0 5 5 15 x = 'ID' Examples
df[x] 0 0 1 1 2 2 3 3 4 4 5 5 Name: ID, dtype: int64 type(df[x]) pandas.core.series.Series df['x'] 0 0 1 15 2 0 3 0 4 0 5 15 Name: x, dtype: int64 type(df['x']) pandas.core.series.Series df[[x]] ID 0 0 1 1 2 2 3 3 4 4 5 5 type(df[[x]]) pandas.core.frame.DataFrame df[['x']] x 0 0 1 15 2 0 3 0 4 0 5 15 type(df[['x']]) pandas.core.frame.DataFrame df.x 0 0 1 15 2 0 3 0 4 0 5 15 Name: x, dtype: int64 type(df.x) pandas.core.series.Series Further reading
Indexing and Selecting Data