2024-05-29 03:07:11 发布
网友
我一直在尝试读取数据帧中的CSV文件,其中一些行中有"?"值。你知道吗
"?"
我想找到包含这些值的行(?)在所有的柱子上
我尝试使用loc,但它返回一个空的数据帧
test_df.loc(test_df['rbc'] == "?"] test_df.loc(test_df['rbc'] == None]
这将返回一个空的数据帧
我想在所有列上迭代数据帧
有人能建议一个方法吗
这会有用的。你知道吗
result = test_df[test_df['rbc'].str.contains("?")]
如果要只检查所有列中的?值:
?
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
您可以先创建布尔值DataFrame,然后检查每行和每列的^{}True以进行筛选:
DataFrame
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
这会有用的。你知道吗
如果要只检查所有列中的
?
值:如果要检查所有列中所有可能的子字符串
?
,则更一般:编辑:
您可以先创建布尔值} True以进行筛选:
DataFrame
,然后检查每行和每列的^{细节:
相关问题 更多 >
编程相关推荐