import pandas as pd
from pandas import Series, DataFrame
import numpy as np
df = DataFrame(np.random.randn(6,4), columns=list('ABCD'))
df
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 |
选择A列的数据
df['A']
0 -0.532235 1 1.282245 2 1.894709 3 -1.421003 4 -0.477041 5 -2.055907 Name: A, dtype: float64
切片得到行数据
df[1:3]
A | B | C | D | |
---|---|---|---|---|
1 | 1.282245 | -2.136740 | 0.969922 | 0.110193 |
2 | 1.894709 | 0.732707 | -1.164495 | -0.379666 |
DataFrame的loc方法帮助选择数据
# 选择第0行数据
df.loc[0]
A 0.081227 B 1.651024 C -0.063561 D 1.992570 Name: 0, dtype: float64
# 选择多列数据
df.loc[:, ['A', 'B']]
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 |
# 选择局部数据,行列交叉区域的数据
df.loc[0:2, ['A', 'B']]
A | B | |
---|---|---|
0 | 0.081227 | 1.651024 |
1 | -0.060838 | -0.293773 |
2 | 1.025647 | -0.353300 |
# 只选择一个数据
df.loc[0, 'A']
0.081227162656888133
at方法用于专门获取某个值
df.at[0, 'A']
0.081227162656888133
iloc方法提取第四行数据
df.iloc[3]
A -0.788950 B -0.221509 C -1.079488 D -0.833900 Name: 3, dtype: float64
# 返回series数据类型
type(df.iloc[3])
pandas.core.series.Series
# 返回地4-5行,1-2列
df.iloc[3:5, 0:2]
A | B | |
---|---|---|
3 | -0.788950 | -0.221509 |
4 | 1.038247 | 0.376582 |
# 提取不连续行和列的数
df.iloc[[1,2,4], [0,2]]
A | C | |
---|---|---|
1 | -0.060838 | -0.757681 |
2 | 1.025647 | -0.878448 |
4 | 1.038247 | 0.698767 |
# 提取某一个值
df.iloc[1,1]
-0.29377253872215964
iat是专门提取某个数的方法,效率更高
df.iat[1,1]
-0.29377253872215964
# 筛选D列数据中大于0的行
df[df.D > 0]
A | B | C | D | |
---|---|---|---|---|
0 | 0.081227 | 1.651024 | -0.063561 | 1.992570 |
4 | 1.038247 | 0.376582 | 0.698767 | 0.401919 |
# 使用&符号实现多条件筛选
df[(df.D > 0) & (df.C < 0)]
A | B | C | D | |
---|---|---|---|---|
0 | 0.081227 | 1.651024 | -0.063561 | 1.99257 |
加入我们只需要A和B列的数据,而D和C列数据都是用于筛选的,可如此写
df[['A', 'B']][(df.D > 0) & (df.C < 0)]
A | B | |
---|---|---|
0 | 0.081227 | 1.651024 |
通过insin方法来筛选特定的值
#
alist = [1, 0.054497, 0.36]