In [1]:
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
In [8]:
df = DataFrame(np.random.randn(6,4), columns=list('ABCD'))
df
Out[8]:
A B C D
0 0.081227 1.651024 -0.063561 1.992570
1 -0.060838 -0.293773 -0.757681 -0.397578
2 1.025647 -0.353300 -0.878448 -2.015514
3 -0.788950 -0.221509 -1.079488 -0.833900
4 1.038247 0.376582 0.698767 0.401919
5 -0.067863 0.174289 1.914769 -0.808617

1. DataFrame选择数据

选择A列的数据

In [3]:
df['A']
Out[3]:
0   -0.532235
1    1.282245
2    1.894709
3   -1.421003
4   -0.477041
5   -2.055907
Name: A, dtype: float64

切片得到行数据

In [4]:
df[1:3]
Out[4]:
A B C D
1 1.282245 -2.136740 0.969922 0.110193
2 1.894709 0.732707 -1.164495 -0.379666

DataFrame的loc方法帮助选择数据

In [9]:
# 选择第0行数据
df.loc[0]
Out[9]:
A    0.081227
B    1.651024
C   -0.063561
D    1.992570
Name: 0, dtype: float64
In [10]:
# 选择多列数据
df.loc[:, ['A', 'B']]
Out[10]:
A B
0 0.081227 1.651024
1 -0.060838 -0.293773
2 1.025647 -0.353300
3 -0.788950 -0.221509
4 1.038247 0.376582
5 -0.067863 0.174289
In [11]:
# 选择局部数据,行列交叉区域的数据
df.loc[0:2, ['A', 'B']]
Out[11]:
A B
0 0.081227 1.651024
1 -0.060838 -0.293773
2 1.025647 -0.353300
In [12]:
# 只选择一个数据
df.loc[0, 'A']
Out[12]:
0.081227162656888133

at方法用于专门获取某个值

In [13]:
df.at[0, 'A']
Out[13]:
0.081227162656888133

2. DataFrame切片操作

iloc方法提取第四行数据

In [14]:
df.iloc[3]
Out[14]:
A   -0.788950
B   -0.221509
C   -1.079488
D   -0.833900
Name: 3, dtype: float64
In [15]:
# 返回series数据类型
type(df.iloc[3])
Out[15]:
pandas.core.series.Series
In [16]:
# 返回地4-5行,1-2列
df.iloc[3:5, 0:2]
Out[16]:
A B
3 -0.788950 -0.221509
4 1.038247 0.376582
In [17]:
# 提取不连续行和列的数
df.iloc[[1,2,4], [0,2]]
Out[17]:
A C
1 -0.060838 -0.757681
2 1.025647 -0.878448
4 1.038247 0.698767
In [18]:
# 提取某一个值
df.iloc[1,1]
Out[18]:
-0.29377253872215964

iat是专门提取某个数的方法,效率更高

In [19]:
df.iat[1,1]
Out[19]:
-0.29377253872215964

3. DataFrame筛选数据

In [21]:
# 筛选D列数据中大于0的行
df[df.D > 0]
Out[21]:
A B C D
0 0.081227 1.651024 -0.063561 1.992570
4 1.038247 0.376582 0.698767 0.401919
In [22]:
# 使用&符号实现多条件筛选
df[(df.D > 0) & (df.C < 0)]
Out[22]:
A B C D
0 0.081227 1.651024 -0.063561 1.99257

加入我们只需要A和B列的数据,而D和C列数据都是用于筛选的,可如此写

In [23]:
df[['A', 'B']][(df.D > 0) & (df.C < 0)]
Out[23]:
A B
0 0.081227 1.651024

通过insin方法来筛选特定的值

In [ ]:
# 
alist = [1, 0.054497, 0.36]