pandas的DataFrame的行列选择

Pandas可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取。相关函数如下:

1)loc,基于列label,可选取特定行(根据行index);

2)iloc,基于行/列的position;

3)at,根据指定行index及列label,快速定位DataFrame的元素;

4)iat,与at类似,不同的是根据position来定位的;

5)ix,为loc与iloc的混合体,既支持label也支持position;

The simplified rules of indexing are

  • Use loc for label-based indexing
  • Use iloc for positional indexing
  1. # -*- coding:utf-8 -*-
  2. import pandas as pd
  3.  
  4. df = pd.read_csv(‘./iris_training.csv‘, low_memory=False)
  5. print(df.head(10))
  6. """
  7. 120 4 setosa versicolor virginica
  8. 0 6.4 2.8 5.6 2.2 2
  9. 1 5.0 2.3 3.3 1.0 1
  10. 2 4.9 2.5 4.5 1.7 2
  11. 3 4.9 3.1 1.5 0.1 0
  12. 4 5.7 3.8 1.7 0.3 0
  13. 5 4.4 3.2 1.3 0.2 0
  14. 6 5.4 3.4 1.5 0.4 0
  15. 7 6.9 3.1 5.1 2.3 2
  16. 8 6.7 3.1 4.4 1.4 1
  17. 9 5.1 3.7 1.5 0.4 0"""

行选择

Pandas进行行选择一般有三种方法:

  • 连续多行的选择用类似于python的列表切片
  • loc通过行标签索引来确定行的
  • iloc通过行号索引来确定行
  1. # 第一种,使用类似于python的列表切片
  2. print(df[0:5])
  3. """
  4. 120 4 setosa versicolor virginica
  5. 0 6.4 2.8 5.6 2.2 2
  6. 1 5.0 2.3 3.3 1.0 1
  7. 2 4.9 2.5 4.5 1.7 2
  8. 3 4.9 3.1 1.5 0.1 0
  9. 4 5.7 3.8 1.7 0.3 0 """
  10.  
  11.  
  12. print(df[0:5:2])
  13. """
  14. 120 4 setosa versicolor virginica
  15. 0 6.4 2.8 5.6 2.2 2
  16. 2 4.9 2.5 4.5 1.7 2
  17. 4 5.7 3.8 1.7 0.3 0 """
  1. # 第二种,按照指定的索引选择一行或多行,使用loc[]方法
  2. # .loc可以不加列名,则是行选择
  3.  
  4. ser = df.loc[0]
  5. print(ser)
  6. """
  7. 120 6.4
  8. 4 2.8
  9. setosa 5.6
  10. versicolor 2.2
  11. virginica 2.0
  12. Name: 0, dtype: float64 """
  13.  
  14.  
  15. maser = df.loc[0:5] # 包括了5,它与第一种的列表索引最大的不同是包含了索引号为5的那一行数据
  16. print(maser)
  17. """
  18. 120 4 setosa versicolor virginica
  19. 0 6.4 2.8 5.6 2.2 2
  20. 1 5.0 2.3 3.3 1.0 1
  21. 2 4.9 2.5 4.5 1.7 2
  22. 3 4.9 3.1 1.5 0.1 0
  23. 4 5.7 3.8 1.7 0.3 0
  24. 5 4.4 3.2 1.3 0.2 0 """
  25.  
  26. print(df.loc[0:5:2])
  27. """
  28. 120 4 setosa versicolor virginica
  29. 0 6.4 2.8 5.6 2.2 2
  30. 2 4.9 2.5 4.5 1.7 2
  31. 4 5.7 3.8 1.7 0.3 0 """
  32.  
  33.  
  34. print(df.loc[[0, 5]])
  35. """ 选择特定的行
  36. 120 4 setosa versicolor virginica
  37. 0 6.4 2.8 5.6 2.2 2
  38. 5 4.4 3.2 1.3 0.2 0 """
  1. # 第三种,按照指定的位置选择一行多多行,使用iloc[]方法
  2. # .iloc可以不加第几列,则是行选择
  3.  
  4. # 在上面的数据中,使用iloc[]和loc[]的效果是一样的,因为索引号都是从0开始并且连续不断
  5. df2 = df.drop([1,2], axis=0)
  6. print(df2.head(10))
  7. """
  8. 120 4 setosa versicolor virginica
  9. 0 6.4 2.8 5.6 2.2 2
  10. 3 4.9 3.1 1.5 0.1 0
  11. 4 5.7 3.8 1.7 0.3 0
  12. 5 4.4 3.2 1.3 0.2 0
  13. 6 5.4 3.4 1.5 0.4 0
  14. 7 6.9 3.1 5.1 2.3 2
  15. 8 6.7 3.1 4.4 1.4 1
  16. 9 5.1 3.7 1.5 0.4 0
  17. 10 5.2 2.7 3.9 1.4 1
  18. 11 6.9 3.1 4.9 1.5 1 """
  19.  
  20. print(df2.loc[[0, 1]])
  21. """
  22. Passing list-likes to .loc or [] with any missing label will raise
  23. KeyError in the future, you can use .reindex() as an alternative.
  24.  
  25. 120 4 setosa versicolor virginica
  26. 0 6.4 2.8 5.6 2.2 2.0
  27. 1 NaN NaN NaN NaN NaN"""
  28.  
  29. print(df2.loc[0:5])
  30. """
  31. 120 4 setosa versicolor virginica
  32. 0 6.4 2.8 5.6 2.2 2
  33. 3 4.9 3.1 1.5 0.1 0
  34. 4 5.7 3.8 1.7 0.3 0
  35. 5 4.4 3.2 1.3 0.2 0 """
  36.  
  37. print(df2.iloc[[0, 1]])
  38. """
  39. 120 4 setosa versicolor virginica
  40. 0 6.4 2.8 5.6 2.2 2
  41. 3 4.9 3.1 1.5 0.1 0 """

列选择

  1. # 通过列名选择单列
  2. print(df[‘120‘])
  3. """
  4. 0 6.4
  5. 1 5.0
  6. 2 4.9
  7. 3 4.9
  8. 4 5.7
  9. 5 4.4
  10. ...
  11. 115 5.5
  12. 116 5.7
  13. 117 4.4
  14. 118 4.8
  15. 119 5.5
  16. Name: 120, Length: 120, dtype: float64"""
  17.  
  18. # 通过列名选择多列
  19. print(df[[‘120‘, ‘setosa‘]])
  20. """
  21. 120 setosa
  22. 0 6.4 5.6
  23. 1 5.0 3.3
  24. 2 4.9 4.5
  25. 3 4.9 1.5
  26. 4 5.7 1.7
  27. 5 4.4 1.3
  28. .. ... ...
  29. 115 5.5 4.4
  30. 116 5.7 4.2
  31. 117 4.4 1.4
  32. 118 4.8 1.4
  33. 119 5.5 3.7
  34.  
  35. [120 rows x 2 columns] """
  36.  
  37. # 如果没有列名
  38. # df[df.columns[0]]

行列选择

  1. # print(df.loc[1:3, [2, 3]]) #.loc仅支持列名操作
  2. # KeyError: ‘None of [[2, 3]] are in the [columns]‘
  3.  
  4.  
  5. print(df.loc[1:3, [‘120‘, ‘setosa‘]])
  6. """
  7. 120 setosa
  8. 1 5.0 3.3
  9. 2 4.9 4.5
  10. 3 4.9 1.5 """
  11.  
  12. print(df.loc[1:3, ‘120‘: ‘setosa‘])
  13. """
  14. 120 4 setosa
  15. 1 5.0 2.3 3.3
  16. 2 4.9 2.5 4.5
  17. 3 4.9 3.1 1.5 """
  18.  
  19. print(df.iloc[1:3, [1, 2]])
  20. """
  21. 4 setosa
  22. 1 2.3 3.3
  23. 2 2.5 4.5 """
  24.  
  25. print(df.iloc[1:3, 1:3])
  26. """
  27. 4 setosa
  28. 1 2.3 3.3
  29. 2 2.5 4.5 """

总结

1).loc,.iloc,.ix,只加第一个参数如.loc([1,2]),.iloc([2:3]),.ix[2]…则进行的是行选择

2).loc,.at,选列是只能是列名,不能是position

3).iloc,.iat,选列是只能是position,不能是列名

4)df[]只能进行行选择,或列选择,不能同时进行列选择,列选择只能是列名。

原文地址:https://www.cnblogs.com/liangzaikaituozhe/p/10337286.html

时间: 2024-10-25 13:12:16

pandas的DataFrame的行列选择的相关文章

python 数据处理学习pandas之DataFrame

请原谅没有一次写完,本文是自己学习过程中的记录,完善pandas的学习知识,对于现有网上资料的缺少和利用python进行数据分析这本书部分知识的过时,只好以记录的形势来写这篇文章.最如果后续工作定下来有时间一定完善pandas库的学习,请见谅!                     by LQJ 2015-10-25 前言: 首先推荐一个比较好的Python pandas DataFrame学习网址 网址: http://www.cnblogs.com/chaosimple/p/4153083

pandas中DataFrame

python数据分析工具pandas中DataFrame和Series作为主要的数据结构. 本文主要是介绍如何对DataFrame数据进行操作并结合一个实例测试操作函数. 1)查看DataFrame数据及属性 df_obj = DataFrame() #创建DataFrame对象 df_obj.dtypes #查看各行的数据格式 df_obj['列名'].astype(int)#转换某列的数据类型 df_obj.head() #查看前几行的数据,默认前5行 df_obj.tail() #查看后几

5 pandas之DataFrame简单实用2

今日内容 # pandas之DataFrame 简介 # Pandas 的两个主要数据结构,Series(1维)和DataFrame(2维) # 整理数据.清理数据,分析数据.数据建模,然后将分析结果组织成适合绘图或表格显示的形式 常用操作 # 布尔索引查询 DataFrame # 复制DataFrame copy # 插入新数据列‘gender’ ['Female','Male','Male','Unknown'] # 多条件选择查询 isin() # 标签|位置赋值 at[],iat[] F

将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy

将pandas的DataFrame数据写入MySQL数据库 + sqlalchemy [python] view plain copy print? import pandas as pd from sqlalchemy import create_engine ##将数据写入mysql的数据库,但需要先通过sqlalchemy.create_engine建立连接,且字符编码设置为utf8,否则有些latin字符不能处理 yconnect = create_engine('mysql+mysql

短视频学习 - 4、pandas之DataFrame简单使用

今日内容 # pandas之DataFrame  简介 # Pandas 的两个主要数据结构,Series(1维)和DataFrame(2维) # 整理数据.清理数据,分析数据.数据建模,然后将分析结果组织成适合绘图或表格显示的形式 常用操作 # 数据录入 DataFrame() # 查看数据类型 dtypes # 查看数据索引 index # 数据排序 sort_values() # 有条件切片查询数据 [],iloc[]  FollowMe # 装逼输出 Texttable  若浏览器无法显

pandas DataFrame(2)-行列索引及值的获取

pandas DataFrame是二维的,所以,它既有列索引,又有行索引 上一篇里只介绍了列索引: import pandas as pd df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]}) print df # 结果: A B 0 0 3 1 1 4 2 2 5 行索引自动生成了 0,1,2 如果要自己指定行索引和列索引,可以使用 index 和 column 参数: 这个数据是5个车站10天内的客流数据: ridership_df = pd

解决问题:使用pandas中DataFrame如何使用条件选择某行

初始化 data = {'db':['my','my','my','dm','dm','dm'],'table':['s','cs','c','book','order','cus']} >>> data = DataFrame(data) >>> data db table 0 my s 1 my cs 2 my c 3 dm book 4 dm order 5 dm cus 如果我想选择出‘db’ == ‘my’ 的所有行,操作如下: data.loc[data['

DataFrame对行列的基本操作实战

1.pandas对行列的基本操作命令: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是Series类

pandas中DataFrame相关

1.创建 1.1  标准格式创建 DataFrame创建方法有很多,常用基本格式是:DataFrame 构造器参数:DataFrame(data=[],index=[],coloumns=[]) In [272]: df2=DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['one','two','three','four']) In [273]: df2 Out[273]: one two three