我有一个名为bas
的df。例如,它看起来像这样:
nat rac numberOnly
0 DD AR 548484554
1 AD AR 168484245
2 FF COL 484984554
3 WW DE 484845225
...
它有50k +行。我尝试仅获取rac == AR or COL
的记录。
我写了这段代码:
AR = bas.where(bas.rac == "AR").dropna()
COL = bas.where(bas.rac == "COL").dropna()
DF = pd.DataFrame()
DF = DF.append(AR)
DF = DF.append(COL)
df的Len是27429。但是代码看起来不太好。特别是我想稍后过滤更多rac
。因此,我决定以这种方式对其进行重新编码:
DF = bas.where(bas.rac == ("AR" or "COL")).dropna()
在这种情况下,DF有27196行。
为什么?这有什么区别?哪种方法更好?也许我应该改用其他东西吗?
答案 0 :(得分:1)
您所做的肯定不会起作用。您正在寻找isin
:
df[df.rac.isin(['AR', 'COL'])]
nat rac numberOnly
0 DD AR 548484554
1 AD AR 168484245
2 FF COL 484984554