每日10行代码165:认识pandas中的DataFrame 数据结构2——DateFrame中的定位

176 篇文章 4 订阅
11 篇文章 0 订阅

接上一章
能创建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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值