行选择
不管何时,你调用了一个方法返回或者打印一个DataFrame时,最左边的一列必然是索引值,可以通过index属性来直接访问DataFrame的索引值。
import pandas as pd
df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],
'age':[25,28,39,35]})
df2=pd.DataFrame({'name':['kate','herz','sally'],
'score':[70,60,90]})
df=pd.merge(df1,df2,on="name")
print(df)
print("index:",df.index)
输出:
age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90
index: Int64Index([0, 1, 2], dtype='int64')
在Series中,每一个索引都对应着一个值,在DataFrame中,每一个索引则对应着一行的数据,可以通过几种方法来选择多数据。
import pandas as pd
df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],
'age':[25,28,39,35]})
df2=pd.DataFrame({'name':['kate','herz','sally'],
'score':[70,60,90]})
df=pd.merge(df1,df2,on="name")
print(df)
#选择前2行
print("0-2\n",df[0:2])
#选择索引为2 的行
print("2:\n",df.loc[2])
#选择索引为0,2 的行
print(df.loc[[0,2]])
输出:
age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90
0-2
age name score
0 25 kate 70
1 28 herz 60
2:
age 35
name sally
score 90
Name: 2, dtype: object
age name score
0 25 kate 70
2 35 sally 90
注意:loc[]与iloc[]方法之间还有一个巨大的差别,那就是loc[]里的参数是对应的索引值即可,所以参数可以是整数,也可以是字符串。而iloc[]里的参数表示的是第几行的数据,所以只能是整数。可以参考:http://www.cnblogs.com/kylinlin/p/5231404.html
自定义索引
Pandas可以使用某一列来重新自定义DataFrame的索引,通过set_index()方法来实现,该方法主要有两个参数:
- inplace,如果设置为True就不会返回一个新的DataFrame,而是直接修改该DataFrame
- drop,如果设置为True,就会移出掉该列的数据
import pandas as pd
df1=pd.DataFrame({'name':['kate','herz','catherine','sally'],
'age':[25,28,39,35]})
df2=pd.DataFrame({'name':['kate','herz','sally'],
'score':[70,60,90]})
df=pd.merge(df1,df2,on="name")
print(df)
df3=df.set_index('name', inplace=False, drop=False)
print(df3)
结果:
age name score
0 25 kate 70
1 28 herz 60
2 35 sally 90
age name score
name
kate 25 kate 70
herz 28 herz 60
sally 35 sally 90