我有一个大型数据框,已导入 pandas,我想通过过滤器将其截断。 这是我的基本示例代码:
import pandas as pd
import numpy as np
from pandas import Series, DataFrame
df = DataFrame({'A':[12345,0,3005,0,0,16455,16454,10694,3005],'B':[0,0,0,1,2,4,3,5,6]})
df2= df[df["A"].map(lambda x: x > 0) & (df["B"] > 0)]
基本上这会显示最后 4 个结果,这是半正确的。 但我需要显示除这些结果之外的所有内容。 所以本质上,我正在寻找一种使用此过滤器的方法,但如果可能的话,在“非”版本中。 因此,如果 A 列大于 0 并且 B 列大于 0,那么我们希望从数据框中取消这些值的资格。 谢谢
您可以使用:将所有内容括在括号中,并在外面使用〜(波形符)。代替不。
df[~((df['A'] >0) & (df['B']>0))]
答案:
A B
0 12345 0
1 0 0
2 3005 0
3 0 1
4 0 2
无需
map
实施。你可以颠倒论点,比如......
df.ix[(df.A<=0)|(df.B<=0),:]
boolean indexing
而不使用 ix
:
df[(df.A<=0)|(df.B<=0)]
尝试
df2 = df[df["A"].map(lambda x: x <= 0) | (df["B"] <= 0)]