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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝鲸123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值