我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pandas行和列的获取的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pandas行和列的获取的实现

DataFrame的行和列:df[‘行’, ‘列’]

DataFrame行和列的获取分三个维度

  • 行和列选取:df[],一次只能选取行或列
  • 区域选取:df.loc[], df.iloc[], df.ix[],可以同时为行或列设置筛选条件
  • 单元格选取:df.at[], df.iat[],准确选取某个单元格

先随机生成一个dataframe

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randn(10,5), index=list('abcdefghij'), columns=list('ABCDE'))
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
c    -0.359802    -2.049489    -0.615742    -1.953994    0.685243
d    0.232557    1.768284    -0.447015    2.373358    1.220536
e    -0.997380    -0.447236    0.632368    -0.352590    -0.064736
f    -1.220178    -0.314304    1.202184    0.018326    1.072153
g    -1.508916    0.380466    0.359506    -0.742657    -0.373764
h    1.031420    -3.236676    0.444769    1.396802    -0.405590
i    0.166133    -0.051614    -0.146943    0.609431    -0.351814
j    1.857521    -0.159101    0.899745    1.108722    -0.615379

1. 行和列的获取

1.1 根据索引获取行

获取前3行数据

df[:3]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
c    -0.359802    -2.049489    -0.615742    -1.953994    0.685243

获取第2到3行数据

df[1:3] # 前闭后开
df['b':'c'] # # 前闭后闭
# Output
       A            B           C            D            E
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
c    -0.359802    -2.049489    -0.615742    -1.953994    0.685243

获取特定行数据

# 布尔数组 (数组长度需等于行数)
df[[True,False,True,False,False,False, True, True, False, True]]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
c    -0.359802    -2.049489    -0.615742    -1.953994    0.685243
g    -1.508916    0.380466    0.359506    -0.742657    -0.373764
h    1.031420    -3.236676    0.444769    1.396802    -0.405590
j    1.857521    -0.159101    0.899745    1.108722    -0.615379

1.2 根据条件获取行

获取A列大于0的行

df[df.A > 0]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
d    0.232557    1.768284    -0.447015    2.373358    1.220536
h    1.031420    -3.236676    0.444769    1.396802    -0.405590
i    0.166133    -0.051614    -0.146943    0.609431    -0.351814
j    1.857521    -0.159101    0.899745    1.108722    -0.615379

获取A列和B列大于0的行

df[(df.A > 0) & (df.B > 0)]
# Output
       A            B           C            D            E
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
d    0.232557    1.768284    -0.447015    2.373358    1.220536

获取A列或列大于0的行

df[(df.A > 0) | (df.B > 0)]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
d    0.232557    1.768284    -0.447015    2.373358    1.220536
g    -1.508916    0.380466    0.359506    -0.742657    -0.373764
h    1.031420    -3.236676    0.444769    1.396802    -0.405590
i    0.166133    -0.051614    -0.146943    0.609431    -0.351814
j    1.857521    -0.159101    0.899745    1.108722    -0.615379

1.3 获取列

# 获取A列
df['A'] # 输出为Series类型
df[['A']] # 输出为DataFrame类型

# 获取A列和B列
df[['A', 'B']]
df[df.columns[0:2]]

2. 区域选取

  • df.loc[] 只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
  • df.iloc[] 只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
  • df.ix[]既可以使用标签索引,也可以使用整数索引。

2.1 df.loc[]

pandas.DataFrame.loc 官方文档

2.1.1 行选取

获取a行

# 输出为Series类型
df.loc['a']
df.loc['a', :]
# Output
A    0.299206
B   -0.383297
C   -0.931467
D   -0.591609
E   -1.131105
Name: a, dtype: float64

# 输出为DataFrame类型
df.loc[['a']]
df.loc[['a'], :]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105

获取a, b, d行

# 使用标签索引
df.loc[['a', 'b', 'd']]
df.loc[['a', 'b', 'd'], :]
# 使用布尔数组
df[[True, True, False, True, False, False, False, True, False, True]]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
d    0.232557    1.768284    -0.447015    2.373358    1.220536

获取a到d行

df.loc['a':'d', :]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
c    -0.359802    -2.049489    -0.615742    -1.953994    0.685243
d    0.232557    1.768284    -0.447015    2.373358    1.220536

选取A列大于0的行

df.loc[df.A > 0]
df.loc[df.A > 0, :]
# Output
       A            B           C            D            E
a    0.299206    -0.383297    -0.931467    -0.591609    -1.131105
b    0.074351    0.791849    1.637467    -1.408712    -1.376527
d    0.232557    1.768284    -0.447015    2.373358    1.220536
h    1.031420    -3.236676    0.444769    1.396802    -0.405590
i    0.166133    -0.051614    -0.146943    0.609431    -0.351814
j    1.857521    -0.159101    0.899745    1.108722    -0.615379

2.1.2 列选取

# 选取A列
df.loc[:, 'A']
# 选取A列和C列
df.loc[:, ['A', 'C']]
# 选取A列到C列
df.loc[:, 'A':'C']

2.1.3 同时选取行和列

# 选取c行B列的值
df.loc['c', 'B']
# 选取A列和B列同时大于0的C列和D列
df.loc[((df.A > 0) & (df.B > 0)), ['C', 'D']]

2.1.4 行和列的赋值

# 令a行为10
df.loc['a', :] = 10
# 令B列为50
df.loc[:, 'B'] = 50
# 令b, c行的C到F列为30
df.loc[['b', 'c'], 'C':'F'] = 30
# 令C列小于0的行赋值为0
df.loc[df.C < 0] = 0

2.1.5 多重索引

Example

tuples = [
   ('cobra', 'mark i'), ('cobra', 'mark ii'),
   ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'),
   ('viper', 'mark ii'), ('viper', 'mark iii')
]
index = pd.MultiIndex.from_tuples(tuples)
values = [[12, 2], [0, 4], [10, 20],
        [1, 4], [7, 1], [16, 36]]

df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index)
# Output
df
                     max_speed  shield
cobra      mark i           12       2
           mark ii           0       4
sidewinder mark i           10      20
           mark ii           1       4
viper      mark ii           7       1
           mark iii         16      36
df.loc['cobra']
         max_speed  shield
mark i          12       2
mark ii          0       4
# return a Series
df.loc[('cobra', 'mark ii')] 
max_speed    0
shield       4
Name: (cobra, mark ii), dtype: int64

# return a dataframe
df.loc[[('cobra', 'mark ii')]]
               max_speed  shield
cobra mark ii          0       4
# return a Series
df.loc['cobra', 'mark i']
max_speed    12
shield        2
Name: (cobra, mark i), dtype: int64
df.loc[('cobra', 'mark i'), 'shield']
df.loc[('cobra', 'mark i'):'viper']
                     max_speed  shield
cobra      mark i           12       2
           mark ii           0       4
sidewinder mark i           10      20
           mark ii           1       4
viper      mark ii           7       1
           mark iii         16      36

df.loc[('cobra', 'mark i'):('viper', 'mark ii')]
                    max_speed  shield
cobra      mark i          12       2
           mark ii          0       4
sidewinder mark i          10      20
           mark ii          1       4
viper      mark ii          7       1

2.2 df.iloc[ ]

pandas.DataFrame.iloc 官方文档

2.2.1 行选取

选取第二行

# return a Series
df.iloc[1]
df.iloc[1, :]
# return a dataframe
df.iloc[[1]]
df.iloc[[1], :]

选取前三行

df.iloc[:3, :]
df.iloc[:3]

选取第一、三、五行

df.iloc[[1, 3, 5]]
df.iloc[[1, 3, 5], :]

2.2.2 列选取

选取第二列

df.iloc[:, 1]

选取前三列

df.iloc[:, 0:3]
df.iloc[:,:3]

选取第一三四列

df.iloc[:, [0, 2, 3]]

2.2.3 同时选取行和列

选取第一行第二列的值

df.iloc[0, 1]

选取第二三行的第二到四列

df.iloc[[1,2], 1:4]

2.3 df.ix[ ]

可以混合标签索引和整数索引

However, when an axis is integer based, ONLY label based access and not positional access is supported. Thus, in such cases, it’s usually better to be explicit and use .iloc or .loc.

3. 单元格选取

  • df.at[ ] 只能使用标签索引
  • df.iat[ ] 只能使用整数索引

3.1 df.at[]

pandas.DataFrame.at 官方文档

获取c行C列的值

df.at['c', 'C']

把c行C列赋值为10

df.at['c', 'C'] = 10

3.2 df.iat[]

pandas.DataFrame.iat 官方文档

获取第三行第三列的值

df.iat[2, 2]

把第三行第三列赋值为10

df.iat[2, 2] = 10

到此这篇关于pandas行和列的获取的实现的文章就介绍到这了,更多相关pandas行列获取内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pandas行和列的获取的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pandas行和列的获取的实现

本文主要介绍了pandas行和列的获取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-17

Python pandas如何获取数据的行数和列数

本文详细介绍了如何使用Pythonpandas库获取数据框的行数和列数。提供了三种方法来获取行数:使用shape属性、count()方法和info()方法。对于列数,也有三种方法:使用shape属性、shape[1]属性和columns属性。本文还提供了一个示例来演示如何使用这些方法。
Python pandas如何获取数据的行数和列数
2024-04-02

Pandas通过index选择并获取行和列

本文主要介绍了Pandas通过index选择并获取行和列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-23

pandas获取对应的行或者列方式

pandas提供了获取特定行或列的多种方法。通过索引值可使用索引器、.loc[]或.iloc[]获取特定行。特定列可通过列名、.loc[]或.iloc[]获取。可使用列表或切片获取多个行或列,也可使用布尔索引根据条件过滤。其他方法包括获取开头或结尾行(.head()和.tail())、随机抽取行(.sample())以及使用SQL语法过滤(.query())。这些方法可灵活地获取pandas数据框中的特定行或列数据。
pandas获取对应的行或者列方式
2024-04-02

Pandas怎么通过index选择并获取行和列

本篇内容主要讲解“Pandas怎么通过index选择并获取行和列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas怎么通过index选择并获取行和列”吧!通过指定pandas.DataF
2023-07-05

pandas如何获取某个数据的行号

本篇文章详细介绍了使用Pandas库获取数据帧中特定数据行号的方法。它提供了使用iloc、loc、query、idxmax和idxmin等方法的详细说明和示例。该文章旨在帮助读者了解如何有效地根据整数索引、行标签或条件过滤行,并在各种数据操作和分析任务中使用此功能。
pandas如何获取某个数据的行号
2024-04-02

Pandas读取csv的实现

本文主要介绍了Pandas读取csv的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-15

pandas按某列降序的实现

本文主要介绍了pandas按某列降序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-16

pandas中按行或列的值对数据排序的实现

本文主要介绍了pandas中按行或列的值对数据排序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-27

Pandas.DataFrame行和列的转置的实现

本文主要介绍了Pandas.DataFrame行和列的转置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录