在指定列中定位和删除多个字符串的最有效方法(使用尽可能少的行数)是什么?
有关可能有助于提供帮助的.tsv数据集的信息
'tconst' =电影ID
' region ' =电影上映的区域
' language ' =电影语言
我现在要说的是:
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”碰巧是一个非英语国家,但是语言是英语的,那么如何防止这些行也被删除呢?
发布于 2020-11-01 21:56:12
假设我正确地理解了您的问题,并且如果指定的条件仍然有效,您希望删除整行,那么您可以将它们写成掩码,如
cond1 = origin['region'].isin(['US', 'UK', 'AUS'])
cond2 = origin['language'] == 'en'将它们与|组合起来(为了保持一行,至少需要其中一个条件为真)
result = origin[cond1 | cond2]当然,如果您愿意这样做,也可以用一行编写:
result = origin[(origin['region'].isin(['US', 'UK', 'AUS'])) | (origin['language'] == 'en')]https://stackoverflow.com/questions/64637320
复制相似问题