关于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类型