接上一章
能创建DateFrame后,自然会关注怎么从DateFrame中取到数据。首先可以用字典的方式:
In [73]: frame2
Out[73]:
year state pop dept
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN
In [76]: frame2['state']
Out[76]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
six Nevada
Name: state, dtype: object
从这方面看,可以把DateFrame当成一个二维字典,这个字典存放了很多以列为单位 的字典,然后这个小字典又存放了以行为单位的小字典 。
In [77]: frame2['state']['one']
Out[77]: 'Ohio'
这种方式 默认的是先取列,你不能写成 frame2['one']
,不然会报 KeyError
In [78]: type(frame2['state'])
Out[78]: pandas.core.series.Series
每一列其实是一个Series对象,所以也适用对Series的操作。并且这一Series对象会自动赋予一个等于列名的name属性。
获取多列:
In [84]: frame2[['state','pop']]
Out[84]:
state pop
one Ohio 1.5
two Ohio 1.7
three Ohio 3.6
four Nevada 2.4
five Nevada 2.9
six Nevada 3.2
注意方括号中是一个数组。
获取多列多行:
In [85]: frame2[['state','pop']][0:5]
Out[85]:
state pop
one Ohio 1.5
two Ohio 1.7
three Ohio 3.6
four Nevada 2.4
five Nevada 2.9
也可以用属性连接的方式来获取一列,比如说:
In [86]: frame2.state
Out[86]:
one Ohio
two Ohio
three Ohio
four Nevada
five Nevada
six Nevada
Name: state, dtype: object
这种方式只适合列名是一个合法的变量名的时候。
那么,如果只想去一某一行或某几行的数据呢?可以这样操作:
In [88]: frame2[0:3]
Out[88]:
year state pop dept
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
DataFrame数据也可以看成是一个列表,可以用切片的方式获取DataFrame 行,或者用索引的方式:
In [89]: frame2['one':'three']
Out[89]:
year state pop dept
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
获取一行,也可以用下面的方式:
In [93]: frame2.loc['three']
Out[93]:
year 2002
state Ohio
pop 3.6
dept NaN
Name: three, dtype: object
注意,这跟直接用索引得来的数据是有所区别的
In [94]: type(frame2.loc['three'])
Out[94]: pandas.core.series.Series
In [95]: type(frame2[0:3])
Out[95]: pandas.core.frame.DataFrame
Original: https://blog.csdn.net/weixin_44981444/article/details/124565147
Author: 天天卡丁
Title: 每日10行代码165:认识pandas中的DataFrame 数据结构2——DateFrame中的定位
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/677825/
转载文章受原作者版权保护。转载请注明原作者出处!