The difference between double brace `[[…]]` and single brace `[..]` indexing in Pandas

后端 未结 3 1635
梦如初夏
梦如初夏 2020-12-03 10:53

I\'m confused about the syntax regarding the following line of code:

x_values = dataframe[[\'Brains\']]

The dataframe object consists of 2

3条回答
  •  执念已碎
    2020-12-03 11:03

    Consider this:

    Source DF:

    In [79]: df
    Out[79]:
       Brains  Bodies
    0      42      34
    1      32      23
    

    Selecting one column - results in Pandas.Series:

    In [80]: df['Brains']
    Out[80]:
    0    42
    1    32
    Name: Brains, dtype: int64
    
    In [81]: type(df['Brains'])
    Out[81]: pandas.core.series.Series
    

    Selecting subset of DataFrame - results in DataFrame:

    In [82]: df[['Brains']]
    Out[82]:
       Brains
    0      42
    1      32
    
    In [83]: type(df[['Brains']])
    Out[83]: pandas.core.frame.DataFrame
    

    Conclusion: the second approach allows us to select multiple columns from the DataFrame. The first one just for selecting single column...

    Demo:

    In [84]: df = pd.DataFrame(np.random.rand(5,6), columns=list('abcdef'))
    
    In [85]: df
    Out[85]:
              a         b         c         d         e         f
    0  0.065196  0.257422  0.273534  0.831993  0.487693  0.660252
    1  0.641677  0.462979  0.207757  0.597599  0.117029  0.429324
    2  0.345314  0.053551  0.634602  0.143417  0.946373  0.770590
    3  0.860276  0.223166  0.001615  0.212880  0.907163  0.437295
    4  0.670969  0.218909  0.382810  0.275696  0.012626  0.347549
    
    In [86]: df[['e','a','c']]
    Out[86]:
              e         a         c
    0  0.487693  0.065196  0.273534
    1  0.117029  0.641677  0.207757
    2  0.946373  0.345314  0.634602
    3  0.907163  0.860276  0.001615
    4  0.012626  0.670969  0.382810
    

    and if we specify only one column in the list we will get a DataFrame with one column:

    In [87]: df[['e']]
    Out[87]:
              e
    0  0.487693
    1  0.117029
    2  0.946373
    3  0.907163
    4  0.012626
    

提交回复
热议问题