【Pandas】选择数据

矫情吗;* 2023-07-10 15:50 10阅读 0赞

1.创建一个DataFrame

  1. import numpy as np
  2. import pandas as pd
  3. dates = pd.date_range("20200301", periods=6)
  4. df1 = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=["A", "B", "C", "D"])
  5. print(df1)
  6. # 结果为
  7. # A B C D
  8. # 2020-03-01 0 1 2 3
  9. # 2020-03-02 4 5 6 7
  10. # 2020-03-03 8 9 10 11
  11. # 2020-03-04 12 13 14 15
  12. # 2020-03-05 16 17 18 19
  13. # 2020-03-06 20 21 22 23

2.选择数据

  1. # 选择A列
  2. print(df1["A"])
  3. print(df1.A)
  4. # 结果都是
  5. # 2020-03-01 0
  6. # 2020-03-02 4
  7. # 2020-03-03 8
  8. # 2020-03-04 12
  9. # 2020-03-05 16
  10. # 2020-03-06 20
  11. # Freq: D, Name: A, dtype: int32
  12. print(df1[["A","B"]]) # 选择A、B两列
  13. print(df1[0:1]) # 取第1行,不能通过df1[0]这种写法取一行
  14. print(df1[0:5]) # 取前5行
  15. print(df1["20200302":"20200305"]) # 取其中某几行
  16. # 输出结果为:
  17. # A B C D
  18. # 2020-03-02 4 5 6 7
  19. # 2020-03-03 8 9 10 11
  20. # 2020-03-04 12 13 14 15
  21. # 2020-03-05 16 17 18 19

通过标签选择数据,loc[ 标签名 ]

  1. # 通过标签选择数据
  2. print(df1.loc["20200303", ["A", "C"]]) # 选择某一行的某些列
  3. # 输出结果为:
  4. # A 8
  5. # C 10
  6. # Name: 2020-03-03 00:00:00, dtype: int32
  7. print(df1.loc["20200303":"20200305", ["A", "C"]]) # 选择某些行的某些列
  8. print(df1.loc[:, ["A", "C"]]) # 选择全部行的某些列

通过位置选择数据,iloc[ 数值 ]

  1. # 通过位置选择数据
  2. print(df1.iloc[2]) # 选择第一行(下标从0开始)
  3. # 输出结果为:
  4. # A 8
  5. # B 9
  6. # C 10
  7. # D 11
  8. # Name: 2020-03-03 00:00:00, dtype: int32
  9. print(df1.iloc[2:5]) # 选择某几行
  10. # 输出结果为:
  11. # A B C D
  12. # 2020-03-03 8 9 10 11
  13. # 2020-03-04 12 13 14 15
  14. # 2020-03-05 16 17 18 19
  15. print(df1.iloc[2:5, 0:2]) # 选择某几行的某几列
  16. # 输出结果为:
  17. # A B
  18. # 2020-03-03 8 9
  19. # 2020-03-04 12 13
  20. # 2020-03-05 16 17
  21. columns = df1.columns.values # 获取列名
  22. print(df1.iloc[:, 0:len(columns)-1]) # 获取除了最后一列的所有列

混合选择,ix[ 行,列 ],行和列可以是标签名也可以是整型

  1. # 混合选择
  2. print(df1.ix["20200301":"20200302", "A":"B"])
  3. print(df1.ix[0:2, 0:2])
  4. print(df1.ix[0:2, "A":"B"])
  5. print(df1.ix["20200301":"20200302", 0:2])
  6. # 以上输出结果都为:
  7. # A B
  8. # 2020-03-01 0 1
  9. # 2020-03-02 4 5

根据比较条件选择

  1. print(df1[df1.A > 10]) # 选择df1中A列的值大于10的行
  2. # 输出结果为:
  3. # A B C D
  4. # 2020-03-04 12 13 14 15
  5. # 2020-03-05 16 17 18 19
  6. # 2020-03-06 20 21 22 23

发表评论

表情:
评论列表 (有 0 条评论,10人围观)

还没有评论,来说两句吧...

相关阅读