首页 > 解决方案 > 检测数据框熊猫的所有列中的值是否为数字并将其删除

问题描述

我有一个这样的数据框

   col  col2
0   1     1
1   B     1
2   3     D
3   4     1
4   A     2
5   2     C
6   3     2

我会删除所有字符并仅在所有列上保留值,如果它是字符则分配 -1。像这样的东西

   col  col2
0    1     1
1   -1     1
2    3    -1
3    4     1
4   -1     2
5    2    -1
6    3     2

我怎么能用python做到这一点,提前谢谢你

标签: pythonpandas

解决方案


IIUC

df.apply(pd.to_numeric, errors='coerce').fillna(-1, downcast='infer') # comment by Pir

Out[480]: 
   col  col2
0    1     1
1   -1     1
2    3    -1
3    4     1
4   -1     2
5    2    -1
6    3     2

或者类似的东西

df.mask(df.applymap(ord)>64,-1)
Out[479]: 
  col col2
0   1    1
1  -1    1
2   3   -1
3   4    1
4  -1    2
5   2   -1
6   3    2

推荐阅读