如何检查特定列中的所有值是否具有相同的数据类型?

数据挖掘 Python 熊猫 数据清理 麻木的
2021-09-19 02:15:39

我有 5000 行的“ABC”列。目前,列的 dtype 是对象。大多数情况下它具有字符串值,但有些值 dtype 不是字符串,我想找到所有这些行并修改这些行。栏目如下:

1 abc
2 def
3 ghi
4 23
5 mno
6 null
7 qwe
8 12-11-2019
...
...
...
4900 ert
5000 tyu

在上述情况下,我可以使用 for 循环找出没有所需 dtype 的行。我只是想知道,是他们解决这个问题的更好方法。

注意:我正在使用熊猫。

1个回答

您可以使用 map 获取列条目的类型:

df['ABC'].map(type)

因此,要过滤所有未存储为 str 的值,您可以使用:

df['ABC'].map(type) != str

但是,如果您只想检查某些行是否包含具有特殊格式(如日期)的字符串,则可以使用正则表达式进行检查,例如:

df['ABC'].str.match('[0-9]{4}-[0-9]{2}-[0-9]{2}')

但是,当然,这不是确切的日期检查。例如,它也会返回True类似的值0000-13-91,但这只是为了给你一个想法。