0

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

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

'tconst' = 电影 ID

'region' = 电影上映的地区

'语言' = 电影语言

这是我现在所拥有的:

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)

我正在尝试删除“区域”列下的所有行,这些行包含不说英语的国家/地区的字符串值缩写。例如,删除区域下不等于'US'、'UK'、'AUS'等的所有行。我已经尝试过括号中的 & 和 or 操作数,它们倾向于只选择和删除我放置在其中的一个字符串值。

附加问题:

语言”列包含大量空值(我并不关心),但是有些行包含英语的“en”如果区域”恰好是非英语国家,语言是英语,我如何防止这些行也被删除?

4

1 回答 1

1

假设我正确理解了您的问题,并且如果您指定的条件成立,您想删除整行,您可以将它们写为掩码,例如

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')]
于 2020-11-01T21:56:12.777 回答