gpt4 book ai didi

python - 如何在 Pandas 数据框中查找 "?"值

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:48 26 4
gpt4 key购买 nike

我一直在尝试读取数据框中的 CSV 文件,其中某些行中有 "?" 值。

我想在所有列中找到包含这些值(?)的行

我尝试使用 loc 但它返回一个空数据框

test_df.loc(test_df['rbc'] == "?"]
test_df.loc(test_df['rbc'] == None]

这将返回一个空的 DataFrame

我想在所有列上迭代数据框

谁能推荐一种方法来做到这一点

最佳答案

如果只检查所有列中的 ? 值:

df1 = df.loc[:, (df.astype(str) == '?').any()]

如果要检查所有列中所有可能的子字符串 ? 则更通用:

df2 = df.loc[:, df.apply(lambda x: x.astype(str).str.contains('\?')).any()]

编辑:

df = pd.DataFrame({'A':list('abcdef'),
'B':[4,5,4,5,5,4],
'C':[7,8,9,'?',2,3],
'D':['?',3,5,7,1,0],
'E':[5,3,6,9,2,'?'],
'F':list('aaabbb')})

print (df)
A B C D E F
0 a 4 7 ? 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 ? 7 9 b
4 e 5 2 1 2 b
5 f 4 3 0 ? b

您可以先创建 bool 型DataFrame,然后检查any每行和每列过滤:

mask = df.apply(lambda x: x.astype(str).str.contains('\?'))
df2 = df.loc[mask.any(axis=1), mask.any()]
print (df2)
C D E
0 7 ? 5
3 ? 7 9
5 3 0 ?

详细信息:

print (mask)
A B C D E F
0 False False False True False False
1 False False False False False False
2 False False False False False False
3 False False True False False False
4 False False False False False False
5 False False False False True False

print (mask.any(axis=1))
0 True
1 False
2 False
3 True
4 False
5 True
dtype: bool

print (mask.any())
A False
B False
C True
D True
E True
F False
dtype: bool

关于python - 如何在 Pandas 数据框中查找 "?"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294729/

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