【发布时间】:2015-04-14 12:24:30
【问题描述】:
如果我有一个数据框并且想要删除其中一列中的值不是整数的任何行,我该怎么做?
如果值不在 0-2 范围内,另一种方法是删除行,但由于我不确定如何执行其中任何一个,我希望其他人可以这样做。
这是我尝试过的,但不知道为什么:
df = df[(df['entrytype'] != 0) | (df['entrytype'] !=1) | (df['entrytype'] != 2)].all(1)
【问题讨论】:
-
好吧,由于运算符优先级,这将不起作用,因此您需要大括号,因此它应该是:
df = df[(df['entrytype'] != 0) | (df['entrytype'] !=1) | (df['entrytype'] != 2)].all(1)但是,如果列中有任何非数字行,则 dtype 将 @987654323 @你能不能只是测试一下呢 -
是的,我确实对此进行了测试,因此由于 dtype 问题,我正在寻找替代方案。有哪些替代方案?
-
你可以做
df[~df['entrytype'].isin([0,1,2])]如果你希望这些值只是那些值,这将过滤不是 0、1 或 2 的行 -
另一种方式可能是:
df['entrytype'].apply(lambda x: str(x).isdigit())