【问题标题】:How can I replicate mixed dtype warning from pandas?如何从 pandas 复制混合 dtype 警告?
【发布时间】:2021-10-03 12:39:50
【问题描述】:

我在 pandas 中读到过,如果一列混合了 dtyped 元素,那么读取会导致 DtypeWarning: Columns (X,X) have mixed types. Specify dtype option on import or set low_memory=False in Pandas

所以,我正在尝试复制此错误,但我似乎无法做到。下面是我用来实现上述行为的代码位:

dfs=pd.DataFrame({'a':['a','b','c',1.,2.,np.nan],'b':['d','e','f','g','h',np.nan]})
dfs = pd.concat([dfs for i in range(10000)],axis=0)
dfs.to_csv('test_csv.csv',index=False)
pd.read_csv('test_csv.csv')

这不会导致任何警告,只会将数据作为对象类型读取。你能帮我理解我哪里出错了吗?

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:

    根据pandas.errors.DtypeWarning的文档:

    在处理较大的文件时会发出此警告,因为每次读取块都会进行 dtype 检查。

    这不是很清楚,但我认为您没有收到警告的原因是您在读取的每个数据块中都有不同的类型,因此 read_csv 自动将它们转换为 @ 987654324@.

    当我创建一个具有不同类型的数据帧分布在不同的块中(即,在切换到不同类型之前,相同数据类型的长块),我收到警告。

    import numpy as np
    import pandas as pd
    
    df = pd.DataFrame({'a': ([1.] * 100000 + ['a'] * 100000 + [np.nan] * 100000),
                       'b': ([1.] * 100000 + ['b'] * 100000 + [np.nan] * 100000)})
    
    df.to_csv('test.csv', index=False)
    df2 = pd.read_csv('test.csv')
    

    输出:

    sys:1: DtypeWarning: Columns (0,1) have mixed types.Specify dtype option on import or set low_memory=False.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 2019-10-05
      • 1970-01-01
      • 2015-11-19
      相关资源
      最近更新 更多