四、提取满足条件的行列

1 提取具体单行列,多行列数据:

(1)提取单行数据:

df.loc[32]
df.iloc[32,:]
df.iloc[32]

(2)提取单列数据:

df[['xxx']]

(3)提取多列数据:

#1.提取xxx1, xxx2, xxx3列数据:
df[['xxx1', 'xxx2', 'xxx3']]

#2.提取除倒数后三列之外的全部列数据:
df.iloc[:, : -3]

(4)提取第一列位置再1,10,15的数字:

#方法一:
df.iloc[[1, 10, 15], 0]

#方法二:
df['col1'][[1, 10, 15]]

#方法三:
df['col1'].take([1, 10, 15])

2. 提取重复值所在的行列数据:duplicated()

(1)判断dataframe数据某列是否重复

df.xxx.duplicated()

(2)判断dataframe数据整行是否重复

df.duplicated()

(3)判断dataframe数据多列数据是否重复(多列组合查)

df.duplicated(subset = ['xxx1','xxx2'])

(4)判断重复索引所在行列数据:

#方法一:
df[df.index.duplicated()]

#方法二:
df.index.is_unqiue

3 提取数值条件判断

(1)判断某列元素值大于某数x的行

df[df['xxx'] > 3]

(2)判断某列元素值大于3小于7的行

df[(df['xxx'] > 3) & (df['xxx'] < 7)]

(3)提取某列最大值所在的行

df[df['xxx'] == df['xxx'].max()]

(4)提取两列之后大于60000的最后三行:

df[(df['xxx1'] + df['xxx2']) > 60000].tail(3)

4 提取含空值的行列:

(1)提取xxx列含空值的行:

data[data['xxx'].isnull()]

(2)提取每列缺失值的具体行数:

for columname in data.columns: #遍历每一列 
    if data[columname].count()  != len(data): #判断缺失行条件:所在列的值数等于总数据的长度
        #将存在缺失值的行的索引转换成列表储存
        loc = data[columname][data[columname].isnull().values == True].index.tolist()
        print('列名:"{}",第{}行位置有缺失值'.format(columname, loc))

5 提取某列不是数值或(包含)字符串的行:

(1)判断该列每行是否为浮点型:(依据type() != float)

for i in range(len(data)):
    if type(data['换手率(%)'][i]) != float: #data['换手率(%)'][i]或写成data.iloc[i, 13]
        temp = temp.append(data.loc[i])
temp.head()

(2)判断某列是否包含字符串('--'):

# 方法一:isin()
data[data['xxx'].isin(['--'])]

# 方法二:contains()
df[df["xxx"].str.contains("--")]

(3)判断某列是否为特定字符串:

# 方法一:
df[df['grammer'] == 'Python']

# 方法二:
results = df['grammer'].str.contains('Python')
results.fillna(value=False, inplace=True)
df[results]

 

6 提取某列符合要求的数据:(如:国家列(Endland, Italy, Russia))

# 方法一:isin()
df[df['xxx'].isin(['England', 'Italy', 'Russia'])] [['xxx', 'xxx1']]

# 方法二:loc提取
df.loc[df['xxx'].isin(['England', 'Italy', 'Russia']), ['xxx','xxx1']]

7 提取某列以'数据'开头的行:

# 方法一:match函数
df[df['xxx'].str.match('数据')]

# 方法二:startswith函数
df[df['xxx'].str.startswith('数据')]

8 提取第一列中不在第二列出现的数字:

df['col1'][~df['col1'].isin(df['col2'])] #~取反

'''
isin()函数:判断数据是否存在,返回布尔型向量,可用于数据的过滤
   Series.isin(vals):判断Series的内容是否再vals中
   Index.isin(vals):判断索引值是否在vals中
   DataFrame.isin(vals):
       vals为列表时,判断DataFrame中数据是否在vals中
       vals为字典时,判断DataFrame中对应列的数据是否在vals中
'''

9 提取两列出现频率最高的数字:

# 先将两列使用append()按行合并,再用计数函数:
temp = df['col1'].append(df['col2'])
temp.value_counts(ascending=False)#不加index,返回的是一个Series
temp.value_counts(ascending=False).index[:3] #返回一个数组

 

10 提取某列中可以整除5的数字位置:

#方法一:
df[df['col1'] % 5 == 0].index

#方法二:np.argwhere
np.argwhere(np.array(df['col1'] % 5 == 0))

 

你可能感兴趣的:(Pandas知识点总结,python,pandas)