我有一个列ClientAccount
的数据框,其中包含我要过滤掉的大量测试数据数据。
要查找包含测试客户端的行数,请执行以下操作:
test_users = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==True]
返回Name: ClientAccount, Length: 2493
很酷,所以原来的71.458行中有2.493行。
然后,为了获得不是这些2.493行的所有内容,我不应该只是反过来吗?
order_data = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==False]
虽然这给了48.046行,但这有什么意义呢?我错过了什么?
答案 0 :(得分:1)
我认为有NaN
或None
个值,因此可以在str.contains
中使用参数na
。同样,对于反转布尔掩码(True
+ False
Series
),请使用~
:
mask = order_data['ClientAccount'].str.contains("DEMO|test", na=False)
test_users1 = order_data[mask]
test_users2 = order_data[~mask]
样品:
order_data = pd.DataFrame({'ClientAccount':['DEMO ss','test f','dfd', None, np.nan, 'test']})
print (order_data)
ClientAccount
0 DEMO ss
1 test f
2 dfd
3 None
4 NaN
5 test
mask = order_data['ClientAccount'].str.contains("DEMO|test", na=False)
test_users1 = order_data[mask]
test_users2 = order_data[~mask]
print (test_users1)
ClientAccount
0 DEMO ss
1 test f
5 test
print (test_users2)
ClientAccount
2 dfd
3 None
4 NaN
没有参数我收到错误:
mask = order_data['ClientAccount'].str.contains("DEMO|test")
ValueError:无法使用包含NA / NaN值的向量进行索引