首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python,我如何对符合条件的所有行(不包括当前行)进行分组和获取值。

使用Python,我如何对符合条件的所有行(不包括当前行)进行分组和获取值。
EN

Stack Overflow用户
提问于 2022-10-30 19:07:40
回答 1查看 22关注 0票数 0

我有一个Pandas,包含2列,都有连续整数。在逐行的基础上,通过将col_1中的所有相等值分组,我试图在col_2中创建所有值的列表,不包括所讨论的行,并将其存储在一个新列(col_3)中。以下是完整的例子:

当前数据:

代码语言:javascript
运行
复制
col_1       col_2
24          30  
24          22  
24          34  
40          50  

所需数据:

代码语言:javascript
运行
复制
col_1       col_2       col_3
24          30          [22,34]
24          22          [30,34]
24          34          [30,22]
40          50          []

我尝试过groupby,但这包括了“当前”行及其值,我需要将其排除在外。

MWE:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

df = pd.DataFrame({'col_1' : [24,24,24,40], 'col_2' : [30,22,34,50}, index=range(4))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-30 20:10:55

我认为最简单的方法是从第3列中移除当前的行值。根据您如何做到这一点,您可以在创建第3列时这样做,或者可以应用一个函数来删除与当前行值匹配的第一个值(即,如果有多个行值,请注意不要删除当前值的所有实例)。如果你需要更多的帮助,我可以跟进,但我认为你已经得到了,因为你已经差不多有了。

编辑:

  1. 创建列3,就像您已经做过的
  2. 定义函数一样,将其应用于数据访问,然后应用函数

从df开始,列3

def remove_col2_val(行):if row3: row3.emove(Row2)返回行

df = df.apply(remove_col2_val,axis=1)

如果有可能row2值不在列表中(这里不应该是这样的,而是为了将来的引用),那么您需要将row3.emove(Row2)包装在一个try/ not块中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74255972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档