1.dataframe可以看数据库里面的一张table
2.更注重于行的筛选,对于列可以看做是属性
3.所以有dataframe.colname,dataframe[:,colname]来提取整个列的操作
都是先行后列
4.利用标签来选择特定的行列dataframe.loc[rowname,colname]
5.默认是对于行进行筛选,所以dataframe.loc[:3],进行切片的时候是默认切行
6.要是想把列加上应该这么写dataframe.loc[rowrange,colrange](标签筛选)
7.还有一个选取是datafram.iloc[](坐标筛选)
8.接下来是条件筛选:本质上就是将判断的结果扩展到对象中的每一个元素:dataframe[]
时刻记住是默认对行进行筛选!
比如
.ipynb
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.randn(6,6),columns=['a','b','c','d','e','f'])
df
df['b']>0
#这里只会保留是true的行
df.loc[1]>0
#这里只会保留是true的列
df.loc[:,(df.loc[1]>0)&(df.loc[3]>0)]
注意,用数据库里数据表的角度来看dataframe而不是把它简单地看成一个二维数据组
还有一种选择(逻辑判断)数据的方法: df=df[df['satisfaction_level']<=1][df['salary']!='nme'][df['department']!='sale']
df[df['time']>20],比较运算符可以有:>,<,>=,<=,==.筛选出所有time属性大于20的行(元组)
df[(df['time']>20|(df['distance']<100)],可以搭配逻辑运算符,来筛选行
df[['time','distance']][df['year']>14],在指定多列(多个列用列表表示)里面筛选行 也可用df.loc[df['year']>14,(['time','distance'])]
选择某列等于多个值时(筛选列):df[df['time'].isin([12,13,14])]
模糊筛选:df.loc[df['time'].str.contains('45')] 这里只能用df.loc。另外,可以使用| 来进行多个条件的筛选。这里是匹配开头。 df.loc[(df['区域'.str.contains('华东|北')])& (df['单价'>1500]).sort_values(by='单价')(这里匹配以华东和北开头的字符串)