我在解析数据文件时经常收到这样的警告:
WARNING:py.warnings:/usr/local/python3/miniconda/lib/python3.4/site-
packages/pandas-0.16.0_12_gdcc7431-py3.4-linux-x86_64.egg/pandas
/io/parsers.py:1164: DtypeWarning: Columns (0,2,14,20) have mixed types.
Specify dtype option on import or set low_memory=False.
data = self._reader.read(nrows)
但是,如果数据很大(我有50k行),我如何在数据中找到dtype发生变化的位置?
4条答案
按热度按时间u2nhd7ah1#
我不完全确定你要找的是什么,但是很容易找到那些包含与第一行类型不同的元素的行,例如:
mgdq6dx12#
除了DSM的答案之外,对于多列 Dataframe ,查找更改类型的列也很有帮助,如下所示:
lvjbypge3#
这种方法使用
pandas.api.types.infer_dtype
来查找混合数据类型的列,它在Python 3.8下的Pandas 1中进行了测试。注意,这个答案有多种赋值表达式的用法,而这些表达式只能在Python 3.8或更新版本中使用,不过,它可以被简单地修改为不使用它们。
然而,这种方法不能找到数据类型改变的行。
fwzugrvs4#
创建具有两种数据类型的列的示例数据
当列使用多种类型时,打印列名称和使用的类型:
要修复列类型,您可以:
df[col] = df[col].astype(str)
来改变数据类型。