Pandas DataFrame 是一个表格,我们可以对DataFrame的列数据或者行数据进行筛选
选取 DataFrame 的列
选取单列
column = df["column_name"]
column = df.loc[:,"column_name"]
column = df.loc[:,["column_name"]]
column = df.iloc[:,column_index]
column = df.iloc[:,[column_index]]
选取多列
columns = df[["column1","column2"]]
columns = df.loc[:,["column1","column2"]]
columns = df.iloc[:,[column_start_index:column_end_index]]
选取 DataFrame 的行
选取单行数据
# 用切片的方式选取第1行数据
row = df[0:1]
row = df.loc["row_name",:]
row = df.loc[["row_name"],:]
row = df.iloc[row_index,:]
row = df.iloc[[row_index],:]
选取多行数据
row = df[row_start_index:row_end_index]
row = df.loc["row_name1":"row_name2",:]
row = df.loc[["row_name1","row_name2"],:]
row = df.iloc[row_start_index:row_end_index,:]
row = df.iloc[[row_start_index,row_end_index],:]
loc 方法
基于行标签和列标签(x_label、y_label)进行索引
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,4),index=list('abcd'),columns=list('ABCD'))
A | B | C | D | |
---|---|---|---|---|
a | 0.437566 | 0.297916 | 0.112590 | 0.344499 |
b | 0.452666 | 0.877309 | 0.558246 | 0.293236 |
c | 0.871981 | 0.405403 | 0.985072 | 0.095807 |
d | 0.437388 | 0.091123 | 0.247424 | 0.478886 |
选取所有行,所有列
.loc[x,y]
第一个参数是行名 :
代表所有行,第二个参数是列名 :
可以代表所有列
print(df.loc[:,:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
b 0.505246 0.726506 0.915992 0.447659
c 0.545251 0.684161 0.227306 0.781615
d 0.706013 0.630996 0.878100 0.495289
选择指定行
选取 index 为 a
的行
print(df.loc['a',:])
A 0.270384
B 0.177939
C 0.922407
D 0.582625
Name: a, dtype: float64
print(df.loc[['a'],:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
选取 index a
到 c
的行
print(df.loc['a':'c',:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
b 0.505246 0.726506 0.915992 0.447659
c 0.545251 0.684161 0.227306 0.781615
选取 index 为 a
和 c
的行
print(df.loc[['a','c'],:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
c 0.545251 0.684161 0.227306 0.781615
选取指定列
选取列名为 A
的列
print(df.loc[:,'A'])
a 0.270384
b 0.505246
c 0.545251
d 0.706013
Name: A, dtype: float64
选取列名A
到 C
的列
print(df.loc[:,'A':'C'])
A B C
a 0.270384 0.177939 0.922407
b 0.505246 0.726506 0.915992
c 0.545251 0.684161 0.227306
d 0.706013 0.630996 0.878100
选取列名为 A
和列名为 C
的列
print(df.loc[:,['A','C']])
A C
a 0.270384 0.922407
b 0.505246 0.915992
c 0.545251 0.227306
d 0.706013 0.878100
iloc 方法
基于行索引和列索引(index,columns)都是从 0 开始,使用iloc方法你不必知道行索引名称和列名,只需要传入行或列的位置参数即可
选择所有行和列
print(df.iloc[:,:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
b 0.505246 0.726506 0.915992 0.447659
c 0.545251 0.684161 0.227306 0.781615
d 0.706013 0.630996 0.878100 0.495289
选取指定行
选取第一行数据
print(df.iloc[0,:])
A 0.270384
B 0.177939
C 0.922407
D 0.582625
Name: a, dtype: float64
选取前3行数据
print(df.iloc[0:3,:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
b 0.505246 0.726506 0.915992 0.447659
c 0.545251 0.684161 0.227306 0.781615
选取第一行和最后一行的数据
print(df.iloc[[0,-1],:])
A B C D
a 0.270384 0.177939 0.922407 0.582625
d 0.706013 0.630996 0.878100 0.495289
选取指定列
选取第一列数据
print(df.iloc[:,0])
a 0.270384
b 0.505246
c 0.545251
d 0.706013
Name: A, dtype: float64
选取前三列数据
print(df.iloc[:,0:3])
A B C
a 0.270384 0.177939 0.922407
b 0.505246 0.726506 0.915992
c 0.545251 0.684161 0.227306
d 0.706013 0.630996 0.878100
选取第一列和最后一列数据
print(df.iloc[:,[0,-1]])
A D
a 0.270384 0.582625
b 0.505246 0.447659
c 0.545251 0.781615
d 0.706013 0.495289
ix
基于标签或者索引(loc和iloc 的混合)
官方文档新的python版本已经弃用 ix,建议使用 loc 和 iloc
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing