【Pandas】选择数据
1.创建一个DataFrame
import numpy as np
import pandas as pd
dates = pd.date_range("20200301", periods=6)
df1 = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=["A", "B", "C", "D"])
print(df1)
# 结果为
# A B C D
# 2020-03-01 0 1 2 3
# 2020-03-02 4 5 6 7
# 2020-03-03 8 9 10 11
# 2020-03-04 12 13 14 15
# 2020-03-05 16 17 18 19
# 2020-03-06 20 21 22 23
2.选择数据
# 选择A列
print(df1["A"])
print(df1.A)
# 结果都是
# 2020-03-01 0
# 2020-03-02 4
# 2020-03-03 8
# 2020-03-04 12
# 2020-03-05 16
# 2020-03-06 20
# Freq: D, Name: A, dtype: int32
print(df1[["A","B"]]) # 选择A、B两列
print(df1[0:1]) # 取第1行,不能通过df1[0]这种写法取一行
print(df1[0:5]) # 取前5行
print(df1["20200302":"20200305"]) # 取其中某几行
# 输出结果为:
# A B C D
# 2020-03-02 4 5 6 7
# 2020-03-03 8 9 10 11
# 2020-03-04 12 13 14 15
# 2020-03-05 16 17 18 19
通过标签选择数据,loc[ 标签名 ]
# 通过标签选择数据
print(df1.loc["20200303", ["A", "C"]]) # 选择某一行的某些列
# 输出结果为:
# A 8
# C 10
# Name: 2020-03-03 00:00:00, dtype: int32
print(df1.loc["20200303":"20200305", ["A", "C"]]) # 选择某些行的某些列
print(df1.loc[:, ["A", "C"]]) # 选择全部行的某些列
通过位置选择数据,iloc[ 数值 ]
# 通过位置选择数据
print(df1.iloc[2]) # 选择第一行(下标从0开始)
# 输出结果为:
# A 8
# B 9
# C 10
# D 11
# Name: 2020-03-03 00:00:00, dtype: int32
print(df1.iloc[2:5]) # 选择某几行
# 输出结果为:
# A B C D
# 2020-03-03 8 9 10 11
# 2020-03-04 12 13 14 15
# 2020-03-05 16 17 18 19
print(df1.iloc[2:5, 0:2]) # 选择某几行的某几列
# 输出结果为:
# A B
# 2020-03-03 8 9
# 2020-03-04 12 13
# 2020-03-05 16 17
columns = df1.columns.values # 获取列名
print(df1.iloc[:, 0:len(columns)-1]) # 获取除了最后一列的所有列
混合选择,ix[ 行,列 ],行和列可以是标签名也可以是整型
# 混合选择
print(df1.ix["20200301":"20200302", "A":"B"])
print(df1.ix[0:2, 0:2])
print(df1.ix[0:2, "A":"B"])
print(df1.ix["20200301":"20200302", 0:2])
# 以上输出结果都为:
# A B
# 2020-03-01 0 1
# 2020-03-02 4 5
根据比较条件选择
print(df1[df1.A > 10]) # 选择df1中A列的值大于10的行
# 输出结果为:
# A B C D
# 2020-03-04 12 13 14 15
# 2020-03-05 16 17 18 19
# 2020-03-06 20 21 22 23
还没有评论,来说两句吧...