首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫.loc[].index

熊猫.loc[].index
EN

Stack Overflow用户
提问于 2020-11-01 21:44:15
回答 1查看 90关注 0票数 0

在指定列中定位和删除多个字符串的最有效方法(使用尽可能少的行数)是什么?

有关可能有助于提供帮助的.tsv数据集的信息

'tconst' =电影ID

' region ' =电影上映的区域

' language ' =电影语言

我现在要说的是:

代码语言:javascript
复制
origin.drop(origin.columns[[1,2,5,6,7]], axis=1, inplace=True)
origin.columns = ['tconst','region','language']
origin.drop(origin.loc[origin['region']!=('US')].index, inplace=True)

我正在尝试删除'region'列下的所有行,该列包含不讲英语的国家的字符串值缩写。例如,删除不等于'US‘、'UK’、'AUS'等区域下的所有行。我尝试了括号内的& and或操作数,它们倾向于只选择并删除我放置在其中的一个字符串值。

附加问题:

'language'列包含大量的空值(我并不真正关心这一点),但是有一些行包含用于英语的'en'。如果“region”碰巧是一个非英语国家,但是语言是英语的,那么如何防止这些行也被删除呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 21:56:12

假设我正确地理解了您的问题,并且如果指定的条件仍然有效,您希望删除整行,那么您可以将它们写成掩码,如

代码语言:javascript
复制
cond1 = origin['region'].isin(['US', 'UK', 'AUS'])
cond2 = origin['language'] == 'en'

将它们与|组合起来(为了保持一行,至少需要其中一个条件为真)

代码语言:javascript
复制
result = origin[cond1 | cond2]

当然,如果您愿意这样做,也可以用一行编写:

代码语言:javascript
复制
result = origin[(origin['region'].isin(['US', 'UK', 'AUS'])) | (origin['language'] == 'en')]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64637320

复制
相关文章

相似问题

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