关于pandas中df[[]]的解谜以及Series与DataFrame的区别

关于pandas中df[[]]的解谜以及Series与DataFrame的区别

一直以来我们获取df中某列的值,一般采用df.parm或者df[‘parm’]的方式来获取。今天突然遇到df[[‘number’]]的形式,一开始以为别人写错了,后来才知道原来是取的东西不一样。先看对比代码:

import pandas as pd


data=pd.DataFrame({'name':['张三','李四','王五'],'age':[18,19,20],'number':[190,200,220]})
print(data)


print(data['number'],type(data['number']))
print('\n\n')
print(data[['number']],type(data[['number']]))

#结果
    name  age  number
0   张三   18     190
1   李四   19     200
2   王五   20     220
0    190
1    200
2    220
Name: number, dtype: int64 <class 'pandas.core.series.Series'>


     number
0     190
1     200
2     220 <class 'pandas.core.frame.DataFrame'>

说明一下:

df[ ]是取某列的值,传入的是列标签名称, 返回的结果是Series.

df[[ ]] 是取某整列,传入是一个列标签列表,之所以产生迷惑是因为只取了一列。写成df[[‘a’,‘b’]]就好理解了。 返回的是DataFrame.

这里简单说明一下Series与DataFrame的区别。

Series:是带行索引名的一维数值,不带列索引名。形式如下:

0    190
1    200
2    220

DataFrame: 一个表格型的数据,既带列索引名,又带行索引名。格式如下:

   number
0     190
1     200
2     220

都说DataFrame是Series的容器,其实从字面翻译来说,Series这个“有对应关系”的键值放在DataFrame这个“数据框”里的。

总结:
df[ ] : 只取某列的值,是键值, 返回Series类型
df[[ ]] :取完全的某列,是表格,返回DataFrame类型

你可能感兴趣的:(python,pandas,python,pandas,Series,DataFrame)