首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从dataset中删除行

从dataset中删除行
EN

Stack Overflow用户
提问于 2019-06-11 06:51:41
回答 3查看 189关注 0票数 1

我有一个数据集如下所示:

代码语言:javascript
运行
复制
   Attribute:Value  Support
0            VDM:1        9
1            VDM:2        2
2            VDM:3        0
3            VDM:4        0
4            VDM:5        1
5            MDM:1        2
6            MDM:2        6
7            MDM:3        0
8            MDM:4        3
9            MDM:5        1
10            OM:1        2
11            OM:2        6
12            OM:3        0
13            OM:4        3
14            OM:5        1

在这里,我想删除支持小于或等于4且属性值: value对为1、2或3的行。删除行后,数据集如下所示:

代码语言:javascript
运行
复制
   Attribute:Value  Support
0            VDM:1        9
1            VDM:4        0
2            VDM:5        1
3            MDM:2        6
4            MDM:4        3
5            MDM:5        1
6             OM:2        6
7             OM:4        3
8             OM:5        1

价值部分只包含1,2,3,4,5。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-11 06:57:59

使用boolean indexing删除行,但条件是必须反转的,因此AND&用于OR,对于第一个掩码使用~作为倒置掩码,对于第二个条件使用Series.gt >表示倒置<=

也适用于:使用Series.str.splitSeries.str.extract后的值。

代码语言:javascript
运行
复制
mask = ~df['Attribute:Value'].str.split(':').str[1].isin(['1','2','3']) | df['Support'].gt(4)

因为:

价值部分只包含1,2,3,4,5。

是否有可能使用:

代码语言:javascript
运行
复制
mask = (df['Attribute:Value'].str.extract(':(\d+)', expand=False).astype(int).gt(3) | 
        df['Support'].gt(4))
代码语言:javascript
运行
复制
df1 = df[mask]
print (df1)

   Attribute:Value  Support
0            VDM:1        9
3            VDM:4        0
4            VDM:5        1
6            MDM:2        6
8            MDM:4        3
9            MDM:5        1
11            OM:2        6
13            OM:4        3
14            OM:5        1
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 06:59:19

我想你是在找这个,

代码语言:javascript
运行
复制
s=(df['Attribute:Value'].str.split(':').str[-1]).astype(int)
df=df[(df['Support']>4)|(s>3)]

O/P:

代码语言:javascript
运行
复制
   Attribute:Value  Support
0            VDM:1        9
3            VDM:4        0
4            VDM:5        1
6            MDM:2        6
8            MDM:4        3
9            MDM:5        1
11            OM:2        6
13            OM:4        3
14            OM:5        1

说明:

  1. 分割属性值
  2. 保留行的值大于3或支持大于4。
票数 1
EN

Stack Overflow用户

发布于 2019-06-11 06:59:50

您可以使用:

代码语言:javascript
运行
复制
df[~(df['Attribute:Value'].str.split(':').str[1].isin(['1','2','3'])&df.Support.le(4))]
代码语言:javascript
运行
复制
   Attribute:Value  Support
0            VDM:1        9
3            VDM:4        0
4            VDM:5        1
6            MDM:2        6
8            MDM:4        3
9            MDM:5        1
11            OM:2        6
13            OM:4        3
14            OM:5        1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56538069

复制
相关文章

相似问题

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