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