首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas数据帧获取掩码列零(0)之间的所有行,并获取每组的第一行和最后一行

Pandas是一个开源的数据分析和数据处理工具,它提供了强大的数据结构和数据分析功能,特别适用于处理结构化数据。其中,数据帧(DataFrame)是Pandas中最常用的数据结构之一,类似于Excel中的表格,可以存储和处理二维数据。

要获取Pandas数据帧中掩码列零(0)之间的所有行,并获取每组的第一行和最后一行,可以按照以下步骤进行操作:

  1. 创建一个Pandas数据帧(DataFrame)对象,假设为df。
  2. 使用掩码操作符(&)将数据帧中的每一列与0进行比较,生成一个布尔类型的掩码(mask)。
  3. 使用Pandas的groupby()函数将数据帧按照掩码列的变化进行分组。
  4. 对每个分组,使用first()函数获取第一行,使用last()函数获取最后一行。
  5. 将每个分组的第一行和最后一行存储到一个新的数据帧中。

以下是示例代码:

代码语言:txt
复制
import pandas as pd

# 创建一个示例数据帧
df = pd.DataFrame({'A': [1, 0, 0, 1, 0, 1],
                   'B': [0, 1, 0, 1, 0, 1],
                   'C': [1, 1, 0, 0, 1, 0]})

# 使用掩码操作符获取掩码列为0的所有行
mask = (df == 0).all(axis=1)

# 按照掩码列的变化进行分组,并获取每组的第一行和最后一行
result = df.groupby((mask != mask.shift()).cumsum()).agg(['first', 'last'])

# 打印结果
print(result)

输出结果为:

代码语言:txt
复制
     A       B       C    
  first last first last
1     0    0     1    0
2     0    0     0    1
3     0    0     1    0

在这个示例中,我们创建了一个包含三列的数据帧df。然后,我们使用掩码操作符将每一列与0进行比较,生成了一个掩码列mask。接下来,我们使用groupby()函数将数据帧按照掩码列的变化进行分组,并使用first()函数和last()函数获取每组的第一行和最后一行。最后,我们将每个分组的第一行和最后一行存储到一个新的数据帧result中,并打印结果。

请注意,以上示例中没有提及任何特定的腾讯云产品,因此无法提供相关产品和产品介绍链接地址。如果您需要了解腾讯云的相关产品和服务,建议访问腾讯云官方网站或咨询腾讯云的客服人员。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

pandaslociloc_pandas获取指定数据

大家好,又见面了,我是你们朋友全栈君 实际操作中我们经常需要寻找数据某行或者某,这里介绍我在使用Pandas时用到两种方法:ilocloc。...读取第二值 (2)读取第二值 (3)同时读取某行某 (4)进行切片操作 ---- loc:通过名称或标签来索引 iloc:通过索引位置来寻找数据 首先,我们先创建一个...Dataframe,生成数据,用于下面的演示 import pandas as pd import numpy as np # 生成DataFrame data = pd.DataFrame(np.arange...,"D","E"]] 结果: 2.iloc方法 iloc方法是通过索引索引位置[index, columns]来寻找值 (1)读取第二值 # 读取第二值,与loc方法一样 data1...columns进行切片操作 # 读取第2、3,第3、4 data1 = data.iloc[1:3, 2:4] 结果: 注意: 这里区间是左闭右开,data.iloc[1:

8.8K21

用过Excel,就会获取pandas数据框架中值、

在Python中,数据存储在计算机内存中(即,用户不能直接看到),幸运pandas库提供了获取值、简单方法。 先准备一个数据框架,这样我们就有一些要处理东西了。...df.columns 提供(标题)名称列表。 df.shape 显示数据框架维度,在本例中为45。 图3 使用pandas获取 有几种方法可以在pandas获取。...语法如下: df.loc[] 其中,是可选,如果留空,我们可以得到整行。由于Python使用基于0索引,因此df.loc[0]返回数据框架第一行。...要获取前三,可以执行以下操作: 图8 使用pandas获取单元格值 要获取单个单元格值,我们需要使用交集。...接着,.loc[[1,3]]返回该数据框架第1第4。 .loc[]方法 正如前面所述,.loc语法是df.loc[],需要提醒(索引)可能值是什么?

19.1K60
  • DataFrameSeries使用

    ':[28,36]}) # 生成三数据,索引分别为姓名,职业年龄 pd.DataFrame() 默认第一个参数放就是数据 - data 数据 - columns 列名 - index 索引名...df按加载部分数据:先打印前5数据 观察第一 print(df.head()) 最左边一是行号,也就是DataFrame索引 Pandas默认使用行号作为索引。...传入是索引序号,loc是索引标签 使用iloc时可以传入-1来获取最后一行数据,使用loc时候不行 lociloc属性既可以用于获取数据,也可以用于获取数据 df.loc[[],[]...] df.iloc[[],[]] df.loc[:,['country','year','pop']] # 获取全部,但每一行内容接受三个 df.iloc[:,[0,2,4,-1]] df.loc...[:,[0,2,4,-1]] df.iloc[:,0:6:2] # 所有, 第0 , 第2 第4 可以通过获取某几个格元素 分组聚合运算 先将数据分组 对每组数据再去进行统计计算如

    10710

    盘一盘 Python 系列 - Cufflinks (下)

    bargap:浮点数格式,值在0 1 之间,用于设置柱状间隔,仅当 kind = bar 或 historgram 才适用。...bargroupgap:浮点数格式,值在 0 1 之间,用于设置柱状分组间隔,仅当 kind = bar 或 historgram 才适用。...,数据中用于 x 轴变量标签 y:字符串格式,数据中用于 y 轴变量标签 z:字符串格式,数据中用于 z 轴变量标签 (只适用 3D 图) text:字符串格式,数据用于显示文字标签...gridcolor:字符串格式,用于设定网格颜色 zerolinecolor:字符串格式,用于设定线颜色 labels:字符串格式,将数据标签设为饼状图每块标签,仅当 kind = pie...第 7 获取出一个「字典」格式数据。 第 8, 9 用列表解析式 (list comprehension) 将日期价格获取出来。

    4.6K10

    Pandas 秘籍:1~5

    我们可以计算每一行所有缺失值,对所得序列从最高到最低进行排序。...shape属性返回第一条元数据,即包含行数元组。 一次获取最多元数据主要方法是info方法。 它提供每个名称,非缺失值数量,每个数据类型以及数据近似内存使用情况。...drop_duplicates方法默认行为是保留每个唯一行第一次出现,因为每一行都是唯一,所以不会删除任何。 但是,subset参数将其更改为仅考虑为其提供(或列表)。...如果回头看步骤 1 数据输出,您将看到最后一行缺少duration值。 为此,步骤 2 中布尔条件返回False。...mask方法第一个参数是条件,该条件通常是布尔级数,例如criteria。 因为mask方法是从数据调用,所以条件为False一行所有值都将变为丢失。

    37.5K10

    Pandas 秘籍:6~11

    以下函数为传递给它每个组返回两第一行是条纹起点,最后一行是条纹终点。...在此函数内部,删除了数据索引并用RangeIndex代替,以便我们轻松找到条纹第一行最后一行。 反转ON_TIME,然后使用相同逻辑查找延迟飞行条纹。...条纹第一行最后一行索引存储为变量。 然后,这些索引用于选择条纹结束月份日期。 我们使用数据返回结果。 我们标记命名索引以使最终结果更清晰。...原始第一行数据成为结果序列中前三个值。 在步骤 2 中重置索引后,pandas 将我们数据默认设置为level_0,level_10。...让我们从原始names数据开始,尝试追加一行。append第一个参数必须是另一个数据,序列,字典或它们列表,但不能是步骤 2 中列表。

    34K10

    数据科学 IPython 笔记本 7.7 处理缺失数据

    在本节中,我们将讨论缺失数据一些一般注意事项,讨论 Pandas 如何选择来表示它,演示一些处理 Python 中缺失数据 Pandas 内置工具。...检测控制 Pandas 数据结构有两种有用方法来检测空数据:isnull()notnull()。任何一个都返回数据布尔掩码。...默认情况下,dropna()将删除包含空值所有: df.dropna() 0 1 2 1 2.0 3.0 5 或者,你可以沿不同轴删除 NA 值; axis = 1删除包含空值所有: df.dropna...(axis='columns') 2 0 2 1 5 2 6 但这也会丢掉一些好数据; 你可能更愿意删除全部为 NA 值或大多数为 NA 值。...参数允许你为要保留/指定最小数量非空值: df.dropna(axis='rows', thresh=3) 0 1 2 3 1 2.0 3.0 5 NaN 这里删除了第一行最后一行,因为它们只包含两个非空值

    4K20

    《机器学习》(入门1-2章)

    Pandas适用于处理包含不同变量类型(整数、浮点)表格数据Matlab不同,Python索引是从0开始。...获取数组元素:a[0] **a[-1]**表示最后一个元素 二维数组:a=numpy.array(([1,2,3],[4,5,6])) 23数组 这时a.shape输出**(2,3)**表示2...a.iloc[0] 为提取第一行 标准DataFrame:pandas.DataFrame(numpy.arange(16),reshape(4,4), columns=[‘col1’,‘col2...a[‘col1’] 获取第一 获取头几行:a.head(2) 获取前2 a.tail(2) 获取最后2 查看df详细信息:a.describe() 矩阵转制:a.T 添加特征(添加):a[...‘col5’]=[1,2,3,4] 删除:del a[‘col5’] 获取列名名:a.columns a.index 直接查看数据:a.values 索引获取数据:a.loc[[‘a’,‘b’],

    1.4K31

    最全面的Pandas教程!没有之一!

    获取 DataFrame 中一行或多行数据获取一行,你需要用 .loc[] 来按索引(标签名)引用这一行,或者用 .iloc[],按这行在表中位置(行数)来引用。 ?...比如,我们希望在下面这个表格中筛选出 'W'>0 : ? 如果要进一步筛选,只看 'X' 中 'W'>0 数据: ?...这个方法将把目标 DataFrame 索引保存在一个叫 index 中,而把表格索引变成默认开始数字,也就是 [0, ..., len(data) - 1] 。比如下面这样: ?...交叉选择数据 我们可以用 .xs() 方法轻松获取到多级索引中某些特定级别的数据。比如,我们需要找到所有 Levels 中,Num = 22 : ?...除了列出所有不重复值,我们还能用 .nunique() 方法,获取所有不重复值个数: ? 此外,还可以用 .value_counts() 同时获得所有对应值计数: ?

    25.9K64

    七步搞定一个综合案例,掌握pandas进阶用法!

    本文从一个案例入手,综合运用pandas各类操作实现对数据处理,处理步骤如下所示。在公众号后台回复“case”即可获取本文全部数据,代码和文档。 ? 案例引入 现有一批销售数据,如下图所示: ?...2.分组聚合 按照需求,需要计算每个城市每个子类别下产品销售总量,因此需要按照citysub_cate分组,对amt求和。为计算占比,求得还需要和原始数据合在一块作为新。...结果如上图,这样销量占比最高产品就会出现在每组第一行。同样看一下city='杭州',sub_cate='用品'结果,发现amt,pct是降序,group_rank是升序。 ?...其中累计到第二时候已经达到了61.1%,超过了50%,因此最终只需取前两即可。 5.目标筛选 经过了前面的数据准备,在这一步需要在每组内,筛选累计值达到50%,且最多三。...上图第三就是我们需要目标group_rank值,注意先要把默认名字改过来,并将此结果与原始数据做一个合并。在此基础上,就可以将每组内不超过目标group_rank值筛选出来。

    2.5K40

    玩转Pandas,让数据处理更easy系列6

    ,让数据处理更easy系列5 实践告诉我们Pandas主要类DataFrame是一个二维结合数组字典结构,因此对而言,通过标签这个字典key,获取对应,而不同于Python,...Pandas,让数据处理更easy系列1; 玩转Pandas,让数据处理更easy系列2) DataFrame可以方便地实现增加删除 ( 玩转Pandas,让数据处理更easy系列2) 智能地带标签切片...,好玩索引提取大数据子集(玩转Pandas,让数据处理更easy系列2 ) 自动数据对齐,完全可以不考虑标签,直接append list....df_data.groupby('A') 默认是按照axis=0分组(),如果按照,修改轴,即 df_data.groupby('A' , axis=1) 也可以按照多个分组,比如: df_data.groupby...如果我们想看下每组第一行,可以调用 first(),可以看到是每个分组第一个,last()显示每组最后一个: agroup.first() ?

    2.7K20

    Python探索性数据分析,这样才容易掌握

    当基于多个数据之间比较数据时,标准做法是使用(.shape)属性检查每个数据行数数。如图所示: ? 注意:左边是行数,右边是数;()。...我们这份数据第一个问题是 ACT 2017 ACT 2018 数据维度不一致。让我们使用( .head() )来更好地查看数据,通过 Pandas 库展示了每一前五,前五个标签值。...为了比较州与州之间 SAT ACT 数据,我们需要确保每个州在每个数据中都被平等地表示。这是一次创新机会来考虑如何在数据之间检索 “State” 值、比较这些值显示结果。...我方法如下图展示: ? 函数 compare_values() 从两个不同数据获取,临时存储这些值,显示仅出现在其中一个数据集中任何值。...最后,我们可以合并数据。我没有一次合并所有四个数据,而是按年一次合并两个数据确认每次合并都没有出现错误。下面是每次合并代码: ? 2017 SAT 与 ACT 合并数据集 ?

    5K30

    数据科学 IPython 笔记本 7.5 数据索引选择

    作为一维数组序列 Series建立字典式接口上,通过与 NumPy 数组相同基本机制,提供数组式项目选择,即切片,掩码花式索引。...作为字典数据 我们将考虑第一个类比是,DataFrame作为相关Series对象字典。...特别是,将单个索引传递给数组会访问一行: data.values[0] ''' array([ 4.23967000e+05, 3.83325210e+07, 9.04139261e+01]...数据操作流畅性,我建议花一些时间使用简单DataFrame,探索各种索引方法所允许索引,切片,掩码花式索引。...114.806121 Illinois 149995 12882135 85.883763 与之类似,直接掩码操作也是按而不是按解释: data[data.density > 100] area

    1.7K20

    Pandas_Study02

    pandas 数据清洗 1. 去除 NaN 值 在Pandas各类数据SeriesDataFrame里字段值为NaN为缺失数据,不代表0而是说没有赋值数据,类似于python中None值。...首先,可以通过isnull notnull 方法查看有哪些NaN值,这两个方法返回布尔值,指示该值是否是NaN值,结合sum 方法可以获取空值数目以及总数。...复杂 使用向前 或 向后 填充数据,依旧使用fillna 方法,所谓向前 是指 取出现NaN值前一或前一行数据来填充NaN值,向后同理 # 在df e 这一上操作,默认下按操作,向前填充数据...,last同时保留最后一次出现重复数据,false 不保留 使用如上。...外连接,分左外连接,右外连接,全连接,左外连接是左表上所有匹配右表,正常能匹配上取B表值,不能取空值,右外连接同理,全连接则是取左并上右表所有,没能匹配上用空值填充。

    20310

    盘一盘 Python 系列 4 - Pandas (上)

    这里 wset 是专门收集数据集信息函数,万矿做东西是又一套 GUI 帮你生成第一行代码,展示如下: 点击「API 函数」下面的「WSET 数据集」会带给你以下界面。...点击下一步得到 看到没有第一行代码就这样生成了,获取数据门槛迅速降低了好多。...情况 1 df.loc[ 'GS':'WMT', '价格': ] 用 loc 获取标签从 ‘GS‘ 到 'WMT',标签从'价格'到最后 sub-DataFrame。...(Hint: 看看两组里冒号 : 在不同位置,再想想 DataFrame 每一行每一数据特点) 布尔索引 在〖数组计算之 NumPy (上)〗提过,布尔索引就是用一个由布尔类型值组成数组来选择元素方法...labels 也是一个二维列表: 第一行储存 dates 每个元素在 data 里位置索引 第二储存 codes 每个元素在 data 里位置索引 用 [] 加第一层索引可以获取第一层信息。

    6.2K52

    Python分析成长之路9

    1.pandas数据结构     在pandas中,有两个常用数据结构:SeriesDataframe  为大多数应用提供了一个有效、易用基础。     ...1.Series:Series是一种一维数组型对象,它包含一个值序列,含有数据标签。...DataFrame既有索引又有索引。最常用就是利用包含等长度列表或numpy数据字典来形成DataFrame ? ?...利用loc方法,能够实现所有单层索引切片操作。       loc使用方法:DataFrame.loc[索引名称或条件,索引名称,如果内部传递是一个区间,则左闭右开。...loc内部可以出入表达式,返回布尔值series       ilocloc区别是,iloc接受必须是索引索引位置。

    2.1K11

    Pandas tricks 之 transform用法

    例如第一数据最终结果为:235.83 / (235.83+232.32+107.97) = 40.93%。 ? 后台回复“transform”获取本文全部代码pdf版本。...思路一: 常规解法是,先用对订单id分组,求出每笔订单总金额,再将源数据得到总金额进行“关联”。最后把相应相除即可。相应代码如下: 1.对订单id分组,求每笔订单总额。...由于是多行对一行关联,关联上就会将总金额重复显示多次,刚好符合我们后面计算需要。结果如上图所示。...思路二: 对于上面的过程,pandastransform函数提供了更简洁实现方式,如下所示: ? 可以看到,这种方法把前面的第一第二步合成了一步,直接得到了sum_price。...这就是transform核心:作用于groupby之后每个组所有数据。可以参考下面的示意图帮助理解: ? 后面的步骤前面一致。 ? 这种方法在需要对多分组时候同样适用。

    2.1K30
    领券