为了账号安全,请及时绑定邮箱和手机立即绑定

检测数据帧熊猫的所有列中的值是否为数字,并将其擦除

检测数据帧熊猫的所有列中的值是否为数字,并将其擦除

烙印99 2022-09-13 17:27:58
我有一个这样的数据帧   col  col20   1     11   B     12   3     D3   4     14   A     25   2     C6   3     2我会删除所有 caracter 并只保留所有列的值,如果它是一个字符,则分配 -1。像这样的东西   col  col20    1     11   -1     12    3    -13    4     14   -1     25    2    -16    3     2我怎么能用蟒蛇做到这一点,提前谢谢你
查看完整描述

3 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

国际自然保护联盟


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


查看完整回答
反对 回复 2022-09-13
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

我们可以使用 df,然后使用 with 将无效数字设置为 ,然后使用 -1 ,然后 unstack() 返回到原始形状,最后在必要时使用转换为 int:stack()pd.to_numericerrors = 'coerce'NaNfillnaastype(int)


pd.to_numeric(df.stack(),errors='coerce').fillna(-1).unstack().astype(int)

   col  col2

0    1     1

1   -1     1

2    3    -1

3    4     1

4   -1     2

5    2    -1

6    3     2


查看完整回答
反对 回复 2022-09-13
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

可以使用该函数将数据框中与 字符对应的值替换为 。df.replace-1


试试这个:


df = df.replace(r"[A-Za-z]", -1, regex=True)

print(df)

输出:


 col1 col2

0   1   1

1  -1   1

2   3  -1

3   4   1

4  -1   2

5   2  -1

6   3   2


查看完整回答
反对 回复 2022-09-13
  • 3 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信