目录
参考链接 Python的DataFrame切片大全 - 腾讯云开发者社区-腾讯云 (tencent.com)
pandas的索引函数主要有三种:
- loc 标签索引,行和列的名称
- iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
- ix 是 iloc 和 loc的合体
- at是loc的快捷方式
- iat是iloc的快捷方式
建立测试数据集:
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 3], 'b': ['a', 'b', 'c'],'c': ["A","B","C"]})
print(df)
a b c
0 1 a A
1 2 b B
2 3 c C
一、行操作
选择某一行
print(df.loc[1,:])
a 2
b b
c B
Name: 1, dtype: object
选择多行
print(df.loc[1:2,:])#选择1:2行,slice为1
a b c
1 2 b B
2 3 c C
print(df.loc[::-1,:])#选择所有行,slice为-1,所以为倒序
a b c
2 3 c C
1 2 b B
0 1 a A
print(df.loc[0:2:2,:])#选择0至2行,slice为2,等同于print(df.loc[0:2:2,:])因为只有3行
a b c
0 1 a A
2 3 c C
增加行
df.loc[3,:]=4
a b c
0 1.0 a A
1 2.0 b B
2 3.0 c C
3 4.0 4 4
交换行
df.loc[[1,2],:]=df.loc[[2,1],:].values
a b c
0 1 a A
1 3 c C
2 2 b B
删除行
df.drop(0,axis=0,inplace=True)
print(df)
a b c
1 2 b B
2 3 c C
二、列操作
更改列名
- df.columns = df.columns.str.strip() # 把columns当成series看待
- df.columns = df.columns.map(lambda x:x) # 使用map函数
- df.rename(columns={’s’:’c’}, inplace=True)
选择某一列
print(df.loc[:,"a"])
0 1
1 2
2 3
Name: a, dtype: int64
选择多列
print(df.loc[:,"a":"b"])
a b
0 1 a
1 2 b
2 3 c
增加列,如果对已有的列,则是赋值
df.loc[:,"d"]=4
a b c d
0 1 a A 4
1 2 b B 4
2 3 c C 4
交换两列的值
df.loc[:,['b', 'a']] = df.loc[:,['a', 'b']].values
print(df)
a b c
0 a 1 A
1 b 2 B
2 c 3 C
删除列
1)直接del DF[‘column-name’]
2)采用drop方法,有下面三种等价的表达式:
- DF= DF.drop(‘column_name’, 1);
- DF.drop(‘column_name’,axis=1, inplace=True)
- DF.drop([DF.columns[[0,1,]]], axis=1,inplace=True