gpt4 book ai didi

python - Pandas 对字符串的列过滤给出了意想不到的结果

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:30 24 4
gpt4 key购买 nike

我有一个数据框,其中有一列ClientAccount,其中包含大量我想要过滤掉的测试数据。

要查找包含测试客户端的行数,我执行以下操作:

test_users = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==True]

返回名称:ClientAccount,长度:2493

很酷,71.458 原始行中有 2.493 行。

那么为了获取 2.493 行之外的所有内容,我不应该做相反的事情吗?

order_data = order_data[order_data['ClientAccount'].str.contains("DEMO|test")==False]

虽然这给出了 48.046 行,但这有什么意义呢?我错过了什么?

最佳答案

我认为有 NaNNone 值,因此可以在 str.contains 中使用参数 na 。同样对于反转 bool 掩码(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: cannot index with vector containing NA / NaN values

关于python - Pandas 对字符串的列过滤给出了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com