我有一个专栏"名称"在数据框中。 我想删除所有的行,它的名字不在names_all中:
names_all = ['alice', 'bob', 'david']
names_all中的所有字符串和数据帧都是unicode字符串。
我写了代码:
for index, row in history.iterrows():
if row['name'] not in names_all:
history.drop(index, inplace=True)
但出于某种原因,它做的很奇怪。它丢弃了太多行(丢弃了所有1700行和更多行)。 在我将所有字符串编码为unicode之前,它也做了一些奇怪的事情,但不是那么多。
答案 0 :(得分:1)
解决方案1:
history = history[history['name'].isin(names_all)]
解决方案2:
history = history.query("name in @names_all"]
答案 1 :(得分:1)
为什么不选择与names_all
匹配的内容:
history = history.loc[history.name.isin(names_all)]