本文主要是介绍pandas 6 - 索引切片选择( tcy),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
索引切片选择 2018/12/3 2018/12/14
1.Series选择:
操作 | 句法 | 实例 | 结果 | 说明 |
- | - | - | - | s=pd.Series([0,1,2,3,4],index=list('abcde')) |
标签s/s.loc | s[单个标签] | s['c'] , s.loc['c'] | 2 | 如未包含标签则引发异常 |
标签s/s.loc | s[标签切片] | s['c':'e']=6 | 2,3,4 | 标签切片包含末端‘e’; |
标签s/s.loc | s[标签列表] | s[['c','d','e']] | 2,3,4 | 标签不存在抛异常。错误用法s[('c','d','e')] |
切片s/s.iloc | s[n-1] | s[2],s.iloc[2] | 2 | - |
切片s/s.iloc | s[切片] | s[2:] | 2,3,4 | 选择第3,4,5行数据 |
切片s/s.iloc | - | s[:3] , s[-3:] | - | 选择前,后3个数据 |
bool-s/s.iloc | s[布尔向量] | s[s>1] , s.loc[s>1] | 2,3,4 | 选择s>1的数据2,3,4个数据(第3,4,5行) |
属性访问 | s.a | s.c | 2 | - |
get-函数 | s.get(label) | s.get('c') | 2 | 缺少标签返回None或指定默认值 |
2.数据帧DataFrame选择:-汇总表
No | 函数 | df[] | df.loc[] | df.iloc[] | df.at[] | df.iat[] |
1 | 用途 | 选择行或列 | 选择行列 | 选择行列 | 标量 | 标量 |
2 | 索引数值 | 行索引int或str; | 索引是行名,列名 | 索引是数值 | 索引是行名,列名 | 索引是数值 |
列索引是行,列名 | - | - | - | - | ||
3 | 选择标量 | - | df.loc['b','C'] | df.iloc[1,2] | df.at['b','C'] | df.iat[1,2] |
选择标量 | - | - | - | df.loc['b'].iat[2] | df.iloc[1].at['C'] | |
4 | 选择行 | df[0:1]或df['a':'a'] | df.loc['b'] | df.iloc[1] | - | - |
选择行 | df[0:3]或df['a':'c'] | df.loc[['b','c']] | df.iloc[[1,3]] | - | - | |
选择行 | df.loc['a':'c'] | df.iloc[1:4] | - | - | ||
5 | 选择列 | df['A']或df.A | df.loc[:,'B'] | df.iloc[:,1] | - | - |
选择列 | df[['A','C']] | df.loc[:,['B','C']] | df.iloc[:,[1,2]] | - | - | |
选择列 | - | df.loc[:,'A':'C'] | df.iloc[:,0:3] | - | - | |
6 | 选择行列 | - | df.loc['a':'c','A':'C'] | df.iloc[0:3,0:3] | - | - |
选择行列 | - | df.loc['a':'c',['A','C']] | df.iloc[0:3,[0,2]] | - | - | |
选择行列 | - | df.loc[['a','c'],'A':'C'] | df.iloc[[0,2],0:3] | - | - | |
选择行列 | - | df.loc['a','A':'C'] | df.iloc[0,0:3] | - | - | |
7 | 布尔索引 | df[b1],df[df.A>0] 行 | df.loc[b1,b2] | df.iloc[b1,b2] | - | - |
df[df['B'].isin([6,7])]行 | b1=np.array([0,1,0,1,0],dtype=bool) | b2=np.array([1,0,1,0],dtype=bool) | ||||
注意: | ||||||
df=pd.DataFrame(np.arange(20).reshape((5,4),order='F'),index=list('abcde'),columns=list('ABCD')) | ||||||
返回值:数值,系列,数据帧;当标签列表返回系列时,若想返回数据帧外加一层中括号。 | ||||||
df[0]或df['a']错误用法;当有分号不能外加中括号;都可以查看设置数据。 |
2.2.实例:
df = pd.DataFrame([[0, 2, 3], [0, 4, 1], [10, 20, 30]],
index=[4, 5, 6], columns=['A', 'B', 'C'])
# 实例1:
df.loc[5].at['B'] # 获取标量值: 4
df.loc[5].iat[1] # 获取标量值:4
df.iloc[1,1] # 4
df.iat[1,1]=4 # 4# 实例2:
df.loc[dates[0]] # 按标签选择:获取第一行
df.iloc[2] # 通过传递的整数的位置df.loc[:,['A','B']] # 按标签选择:获取第A,B列
df.loc['20181015',['A','B']] # 按标签选择-减少返回对象的尺寸df.iloc[3:5,0:2] # 通过整数切片
df.iloc[[1,2,4],[0,2]] # 通过整数位置位置列表# 实例3:使用isin()过滤方法
df2 = df.copy()
df2['D'] = ['one','two','three']
df2[df2['D'].isin(['two','three'])]
'''A B C D
5 0 4 1 two
6 10 20 30 three'''# 实例4:布尔索引-使用单个列的值来选择数据。
df[df.B >=4 ]
# A B C
# 5 0 4 1
# 6 10 20 30df.loc[[False, False, True]]#选取第3行
df.loc[df['B'] >4, ['C']] #一个值返回为数据帧# 实例5:select_dtypes() 选择显示特定数据类型
# 要选择所有数字和布尔列,同时排除无符号整数:
df.select_dtypes(include=['number', 'bool'], exclude=['unsignedinteger'])# 实例6:按可调用选择
# .loc,.iloc以及[]索引也可以接受一个callable索引器。df.loc[lambda df: df.A > 0, :] #获取第三行数据
df.loc[:, lambda df: ['A', 'B']] #获取A,B列数据
df.iloc[:, lambda df: [0, 1]] #获取A,B列数据
df[lambda df: df.columns[0]] #获取A列数据df.A.loc[lambda s: s > 0] #获取序列=10# 实例7:IX 已弃用
df.loc[df.index[[0, 2]], 'A'] # 获取第1,2行第A列数据
df.iloc[[0, 2],df.columns.get_loc('A')] # 获取第1,2行第A列数据
df.iloc[[0, 2],df.columns.get_indexer(['A','B'])] # 获取第1,2行第A,B列数据# 实例8:设置数据
df[['B', 'A']] = df[['A', 'B']] #就地修改
df.loc[:,['B', 'A']] = df[['A', 'B']] #不会修改
# 交换列值的正确方法是使用原始值:
df.loc[:,['B', 'A']] = df[['A', 'B']].values
这篇关于pandas 6 - 索引切片选择( tcy)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!