import pandas as pd
import numpy as np
dates = pd.date_range("20190101", periods=6)
df = pd.DataFrame(np.arange(24).reshape((6, 4)),
index=dates, columns=["A", "B", "C", "D"])
print(df)
# A B C D
# 2019-01-01 0 1 2 3
# 2019-01-02 4 5 6 7
# 2019-01-03 8 9 10 11
# 2019-01-04 12 13 14 15
# 2019-01-05 16 17 18 19
# 2019-01-06 20 21 22 23
print("============选择某一列==============")
#两者等价
print(df["A"])
print(df.A)
# 2019-01-01 0
# 2019-01-02 4
# 2019-01-03 8
# 2019-01-04 12
# 2019-01-05 16
# 2019-01-06 20
# Freq: D, Name: A, dtype: int32
print("============切片选择==============")
print(df[0:3])
# A B C D
# 2019-01-01 0 1 2 3
# 2019-01-02 4 5 6 7
# 2019-01-03 8 9 10 11
print(df["20190102":"20190104"])
# A B C D
# 2019-01-02 4 5 6 7
# 2019-01-03 8 9 10 11
# 2019-01-04 12 13 14 15
print("============通过行列名 label选择: loc ==============")
print(df.loc["20190102"])
# A 4
# B 5
# C 6
# D 7
# Name: 2019-01-02 00:00:00, dtype: int32
print(df.loc[:, ["A", "B"]])
# A B
# 2019-01-01 0 1
# 2019-01-02 4 5
# 2019-01-03 8 9
# 2019-01-04 12 13
# 2019-01-05 16 17
# 2019-01-06 20 21
print(df.loc["20190102", :])
# A 4
# B 5
# C 6
# D 7
# Name: 2019-01-02 00:00:00, dtype: int32
print("============通过position位置选择: iloc==============")
print(df.iloc[3])
# A 12
# B 13
# C 14
# D 15
# Name: 2019-01-04 00:00:00, dtype: int32
print(df.iloc[3:5, 1:3])
# B C
# 2019-01-04 13 14
# 2019-01-05 17 18
print(df.iloc[[1, 3, 5], 1:3])
# B C
# 2019-01-02 5 6
# 2019-01-04 13 14
# 2019-01-06 21 22
print("============行列名label 和 position综合使用选择: loc和iloc==============")
# print(df.ix[:3, ["A", "C"]]) # 不提倡使用,会报警告,但是结果会输出
print("============布尔筛选数据Boolean==============")
# 选择出df中 A 列大于 8 的所有数据
print(df[df.A > 8])
# A B C D
# 2019-01-04 12 13 14 15
# 2019-01-05 16 17 18 19
# 2019-01-06 20 21 22 23