在pandas中, DataFrame的 ix(loc, iloc)属性的设置误区,以及reindex可以找到两个df不同之处

1.ix[ ]

如果想用.ix选取df中某一行某一列的值时,返回的结果是什么?

 
data = DataFrame([{'t':'2018-01-08 14:12:26', 'name':'yang'},{'t':'2017-01-08 14:12:26', 'name':'jian'}, {'t':'2014-01-08 14:12:26', 'name':'yj'}])
print(data)

dd =data.ix[1, 't']
print('\n',type(dd))

ee = data.ix[[1], 't']
print('\n', type(ee))

ff = data.ix[1, ['t']]
print('\n', type(ff))

gg = data.loc[[1], ['t']]
print('\n',type(gg))


结果:

   name                    t
0  yang  2018-01-08 14:12:26
1  jian  2017-01-08 14:12:26
2    yj  2014-01-08 14:12:26


 <class 'str'>

 <class 'pandas.core.series.Series'>

 <class 'pandas.core.series.Series'>

 <class 'pandas.core.frame.DataFrame'>

虽然只有一行和一列数据,但如果在ix的参数中添加了一个[],则表示Series;两个[],则返回DataFrame;没有[],就表示单元格中具体数值。

读者也可以尝试loc和iloc属性。


2.loc[ ]

loc,是基于索引的名称也选取数据集,这里的索引名称也是数字。注意,[0:2]是选取名称为0, 1, 2行的数据,一共三行,这和iloc[]有区别。只能写行和列的名称,不能写序号。

data.loc[0:2]

   name                    t
0  yang  2018-01-08 14:12:26
1  jian  2017-01-08 14:12:26
2    yj  2014-01-08 14:12:26

3.iloc[ ]

iloc,它是基于索引位来选取数据集,也就是数字序号来选取,0:2就是选取 0,1这两行,需要注意的是这里是前闭后开集合。只能写行和列的序号,不能写名称,否则会报错。

data.iloc[0:2]
   name                    t
0  yang  2018-01-08 14:12:26
1  jian  2017-01-08 14:12:26
data.iloc[:2, 1]
#选取第0, 1行,和第1列,也就是名为't'列。写成data.iloc[:2, 't']会报错。因为iloc只能根据数字序号来选取行和列。

0    2018-01-08 14:12:26
1    2017-01-08 14:12:26
Name: t, dtype: object




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值