我有几个DataFrame, AR,AL,BT 等,我希望删除某些行。所有数据框都有 PNR 列。某些行对应于我希望在所有这些数据帧中删除的某些 PNR 值,我发现它们是这样的:
In [28]:
AR['PNR'].value_counts() > 1
Out[28]:
570604 True
570213 True
5804030210 True
5703301118 False
5509100177 False
5808100191 False
4108271224 False
5603050120 False
5112271498 False
etc...
所以我希望删除 PNR 为570604,570213或5804030210的每个数据帧中的所有行。
我的愚蠢方法就是这样做:
AR = AR[AR.PNR != 570604]
AR = AR[AR.PNR != 570213]
etc
BT = BT[BT.PNR != 5804030210]
有什么更好的方法可以做到这一点?谢谢
答案 0 :(得分:1)
我愿意:
AR = AR[~AR.PNR.isin(bad_values)]
您可以通过几种方式获取错误值列表。
我还没有测试过这个,但我的第一次尝试是这样的:
vc = AR.PNR.value_counts()
bad_values = vc[vc > 1].index.tolist()