用pandas中的DataFrame时选取行或列

来源:互联网 发布:js 数组 contains方法 编辑:程序博客网 时间:2024/06/05 14:59

原文链接:http://bbs.fishc.com/thread-79821-1-1.html


  1. import numpy as np
  2. import pandas as pd
  3. from pandas import Sereis, DataFrame

  4. ser = Series(np.arange(3.))

  5. data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))

  6. data['w']  #选择表格中的'w'列,使用类字典属性,返回的是Series类型

  7. data.w    #选择表格中的'w'列,使用点属性,返回的是Series类型

  8. data[['w']]  #选择表格中的'w'列,返回的是DataFrame属性

  9. data[['w','z']]  #选择表格中的'w'、'z'列

  10. data[0:2]  #返回第1行到第2行的所有行,前闭后开,包括前不包括后

  11. data[1:2]  #返回第2行,从0计,返回的是单行,通过有前后值的索引形式,
  12.        #如果采用data[1]则报错

  13. data.ix[1:2] #返回第2行的第三种方法,返回的是DataFrame,跟data[1:2]同

  14. data['a':'b']  #利用index值进行切片,返回的是**前闭后闭**的DataFrame, 
  15.         #即末端是包含的  
  16. data.irow(0)   #取data的第一行
  17. data.icol(0)   #取data的第一列

  18. data.head()  #返回data的前几行数据,默认为前五行,需要前十行则dta.head(10)
  19. data.tail()  #返回data的后几行数据,默认为后五行,需要后十行则data.tail(10)

  20. ser.iget_value(0)  #选取ser序列中的第一个
  21. ser.iget_value(-1) #选取ser序列中的最后一个,这种轴索引包含索引器的series不能采用ser[-1]去获取最后一个,这回引起歧义。

  22. data.iloc[-1]   #选取DataFrame最后一行,返回的是Series
  23. data.iloc[-1:]   #选取DataFrame最后一行,返回的是DataFrame

  24. data.loc['a',['w','x']]   #返回‘a’行'w'、'x'列,这种用于选取行索引列索引已知

  25. data.iat[1,1]   #选取第二行第二列,用于已知行、列位置的选取。
例子:
  1. import pandas as pd
  2. from pandas import Series, DataFrame
  3. import numpy as np

  4. data = DataFrame(np.arange(15).reshape(3,5),index=['one','two','three'],columns=['a','b','c','d','e'])

  5. data
  6. Out[7]: 
  7.         a   b   c   d   e
  8. one     0   1   2   3   4
  9. two     5   6   7   8   9
  10. three  10  11  12  13  14

  11. #对列的操作方法有如下几种

  12. data.icol(0)   #选取第一列
  13. E:\Anaconda2\lib\site-packages\spyder\utils\ipython\start_kernel.py:1: FutureWarning: icol(i) is deprecated. Please use .iloc[:,i]
  14.   # -*- coding: utf-8 -*-
  15. Out[35]: 
  16. one       0
  17. two       5
  18. three    10
  19. Name: a, dtype: int32

  20. data['a']
  21. Out[8]: 
  22. one       0
  23. two       5
  24. three    10
  25. Name: a, dtype: int32

  26. data.a
  27. Out[9]: 
  28. one       0
  29. two       5
  30. three    10
  31. Name: a, dtype: int32

  32. data[['a']]
  33. Out[10]: 
  34.         a
  35. one     0
  36. two     5
  37. three  10

  38. data.ix[:,[0,1,2]]  #不知道列名只知道列的位置时
  39. Out[13]: 
  40.         a   b   c
  41. one     0   1   2
  42. two     5   6   7
  43. three  10  11  12

  44. data.ix[1,[0]]  #选择第2行第1列的值
  45. Out[14]: 
  46. a    5
  47. Name: two, dtype: int32

  48. data.ix[[1,2],[0]]   #选择第2,3行第1列的值
  49. Out[15]: 
  50.         a
  51. two     5
  52. three  10

  53. data.ix[1:3,[0,2]]  #选择第2-4行第1、3列的值
  54. Out[17]: 
  55.         a   c
  56. two     5   7
  57. three  10  12

  58. data.ix[1:2,2:4]  #选择第2-3行,3-5(不包括5)列的值
  59. Out[29]: 
  60.      c  d
  61. two  7  8

  62. data.ix[data.a>5,3]
  63. Out[30]: 
  64. three    13
  65. Name: d, dtype: int32

  66. data.ix[data.b>6,3:4]  #选择'b'列中大于6所在的行中的第4列,有点拗口
  67. Out[31]: 
  68.         d
  69. three  13

  70. data.ix[data.a>5,2:4]  #选择'a'列中大于5所在的行中的第3-5(不包括5)列
  71. Out[32]: 
  72.         c   d
  73. three  12  13

  74. data.ix[data.a>5,[2,2,2]]  #选择'a'列中大于5所在的行中的第2列并重复3次
  75. Out[33]: 
  76.         c   c   c
  77. three  12  12  12

  78. #还可以行数或列数跟行名列名混着用
  79. data.ix[1:3,['a','e']]
  80. Out[24]: 
  81.         a   e
  82. two     5   9
  83. three  10  14

  84. data.ix['one':'two',[2,1]]
  85. Out[25]: 
  86.      c  b
  87. one  2  1
  88. two  7  6

  89. data.ix[['one','three'],[2,2]]
  90. Out[26]: 
  91.         c   c
  92. one     2   2
  93. three  12  12

  94. data.ix['one':'three',['a','c']]
  95. Out[27]: 
  96.         a   c
  97. one     0   2
  98. two     5   7
  99. three  10  12

  100. data.ix[['one','one'],['a','e','d','d','d']]
  101. Out[28]: 
  102.      a  e  d  d  d
  103. one  0  4  3  3  3
  104. one  0  4  3  3  3

  105. #对行的操作有如下几种:
  106. data[1:2]  #(不知道列索引时)选择第2行,不能用data[1],可以用data.ix[1]
  107. Out[18]: 
  108.      a  b  c  d  e
  109. two  5  6  7  8  9

  110. data.irow(1)   #选取第二行
  111. E:\Anaconda2\lib\site-packages\spyder\utils\ipython\start_kernel.py:1: FutureWarning: irow(i) is deprecated. Please use .iloc[i]
  112.   # -*- coding: utf-8 -*-
  113. Out[36]: 
  114. a    5
  115. b    6
  116. c    7
  117. d    8
  118. e    9
  119. Name: two, dtype: int32

  120. data.ix[1]   #选择第2行
  121. Out[20]: 
  122. a    5
  123. b    6
  124. c    7
  125. d    8
  126. e    9
  127. Name: two, dtype: int32


  128. data['one':'two']  #当用已知的行索引时为前闭后闭区间,这点与切片稍有不同。
  129. Out[22]: 
  130.      a  b  c  d  e
  131. one  0  1  2  3  4
  132. two  5  6  7  8  9

  133. data.ix[1:3]  #选择第2到4行,不包括第4行,即前闭后开区间。
  134. Out[23]: 
  135.         a   b   c   d   e
  136. two     5   6   7   8   9
  137. three  10  11  12  13  14

  138. data.ix[-1:]  #取DataFrame中最后一行,返回的是DataFrame类型,**注意**这种取法是有使用条件的,只有当行索引不是数字索引时才可以使用,否则可以选用`data[-1:]`--返回DataFrame类型或`data.irow(-1)`--返回Series类型
  139. Out[11]: 
  140.         a   b   c   d   e
  141. three  10  11  12  13  14

  142. data[-1:]  #跟上面一样,取DataFrame中最后一行,返回的是DataFrame类型
  143. Out[12]: 
  144.         a   b   c   d   e
  145. three  10  11  12  13  14

  146. data.ix[-1] #取DataFrame中最后一行,返回的是Series类型,这个一样,行索引不能是数字时才可以使用
  147. Out[13]: 
  148. a    10
  149. b    11
  150. c    12
  151. d    13
  152. e    14
  153. Name: three, dtype: int32

  154. data.tail(1)   #返回DataFrame中的最后一行
  155. data.head(1)   #返回DataFrame中的第一行
最近处理数据时发现当pd.read_csv()数据时有时候会有读取到未命名的列,且该列也用不到,一般是索引列被换掉后导致的,有强迫症的看着难受,这时候dataframe.drop([columns,])是没法处理的,怎么办呢, 
最笨的方法是直接给列索引重命名:

data6

        Unnamed: 0  high    symbol  time
date                
2016-11-01  0   3317.4  IF1611  18:10:44.8
2016-11-01  1   3317.4  IF1611  06:01:04.5
2016-11-01  2   3317.4  IF1611  07:46:25.5
2016-11-01  3   3318.4  IF1611  09:30:04.0
2016-11-01  4   3321.8  IF1611  09:31:04.0

data6.columns = list('abcd')

data6

    a   b   c   d
date                
2016-11-01  0   3317.4  IF1611  18:10:44.8
2016-11-01  1   3317.4  IF1611  06:01:04.5
2016-11-01  2   3317.4  IF1611  07:46:25.5
2016-11-01  3   3318.4  IF1611  09:30:04.0
2016-11-01  4   3321.8  IF1611  09:31:04.0

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸上晒斑 脸上长晒斑如何去除 脸上晒斑如何去除 脸上的日晒斑怎么办 如何淡化晒斑 脸上长晒斑怎么办 怎么去晒斑小窍门 去除晒斑 晒斑的去除自然方法有哪些 晒斑能去掉吗 脸上长了晒斑怎么办 如何去除晒斑更有效 孕妇脸上的斑怎么去掉 晒斑怎么去 孕斑 西红柿能去斑吗 怎样去掉晒斑 脸上晒斑图片 色斑图片 太阳斑 斑的种类及图片及解析 去除晒斑的好方法 脸上晒斑去除小窍门 芦荟能去斑吗 如何祛晒斑 日晒斑图片 怎么祛除晒斑 怎么祛晒斑 日晒斑怎么去除小窍门 如何快速去晒斑 有日晒斑怎么办 长色斑了怎么办 有晒斑了怎么办 如何祛除色斑 晒斑怎么除 晒斑怎么祛除 出现晒斑怎么办 淡化日晒斑 男士色斑 晒斑怎么形成的 脸部晒斑怎么去除