我有一个包含artist列的数据框train_info。
我决定删除与以下列表中艺术家对应的行:
lst = ["Alekos Kontopoulos","James Ward"]
删除它们后,我检查确认没有它们的记录,例如:
train_info[train_info.artist == "James Ward"]
结果返回一个空的数据框
artist filename
然后我查看了value_counts:
train_info.artist.value_counts()
结果发现它们都在里面…
Ohara Koson 616Carl Larsson 577August Macke 576John William Godward 568Andrea Mantegna 567 ... Vittore Carpaccio 93Conroy Maddox 93Gerard David 92James Ward 81Alekos Kontopoulos 67
有人知道这是怎么发生的吗?
回答:
似乎是有一些空格,所以首先去掉它们:
train_info.artist = train_info.artist.str.strip()
然后使用列表lst
中的值删除行,可以使用Series.isin
并通过~
反转掩码:
train_info[~train_info.artist.isin(lst)]