Pandas 行列操作

行选择
不管何时,你调用了一个方法返回或者打印一个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)
#选择前2print("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

猜你喜欢

转载自blog.csdn.net/th_num/article/details/80436382