Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:数据类型警告,但我指定了数据类型_Python_Python 3.x_Csv_Pandas_Dataframe - Fatal编程技术网

Python 熊猫:数据类型警告,但我指定了数据类型

Python 熊猫:数据类型警告,但我指定了数据类型,python,python-3.x,csv,pandas,dataframe,Python,Python 3.x,Csv,Pandas,Dataframe,我正在使用以下命令读取熊猫数据帧: df = pd.read_csv('../table.csv.gz', nrows=10000, index_col=False, engine='c', true_values=[b'1'], false_values=[b'0'], usecols=usecols, dtype=dtype) 我得到以下警告: DtypeWarning:列(5239724

我正在使用以下命令读取熊猫数据帧:

df = pd.read_csv('../table.csv.gz', nrows=10000,
                 index_col=False, engine='c',
                 true_values=[b'1'], false_values=[b'0'],
                 usecols=usecols, dtype=dtype)
我得到以下警告:

DtypeWarning:列(5239724022449)具有混合类型。在导入时指定dtype选项或设置为low_memory=False。

但是列的标题名显示在
dtype
中。所有这些列的指定类型都是
np.bool
,csv文件中这些列中唯一存在的值是
'1'
'
(逗号之间没有任何值。这将给出一个具有type
object
的列,并在调用
DataFrame.fillna
时变为type
bool

此外,当我编辑CSV文件以删除除违规列以外的所有列以尝试确定警告的来源时,警告停止发生


发生了什么事?这是
read\u csv
中的错误吗?我应该忽略这个警告吗?< /p> ,所以我猜你的问题是,当你读取文件时,你实际上有两种不同类型的值:NP.BoOL(‘1’)和NP.NaN(‘’’),所以实际上,如果你告诉它考虑列为NPBOOL,它将不会这样做。我认为您可以尝试使用相同的方法,只需将false_values参数更改为false_values=[b']

如果这不起作用,你也可以这样做:

df.loc[:,[5,2397,2402,2449]].fillna('0',inplace = True)
df.to_csv('../table.csv.gz')
现在,当你读回它时,实际上你应该在0的位置上

df = pd.read_csv('../table.csv.gz', nrows=10000,
             index_col=False, engine='c',
             true_values=[b'1'], false_values=[b'0'],
             usecols=usecols, dtype=dtype)

由于文件太大,它可能会读取它并将其分块处理。它试图将列存储为
np.bool
,但缺少的值迫使它将该块存储为
对象
。Pandas使用
np.nan
表示缺少的值,因此列必须是
object
float
,直到缺少的值被替换为止。警告告诉您,由于分块读取数据帧,数据帧中可能存在混合的
d类型。您是否尝试过为这些列的
dtype
指定
object
float
?嗯,重新编辑该文件以使其正常工作可能会很好。谢谢,我会的。然而,非常奇怪的是,正是这些列被提出作为警告。我至少还有20个布尔值为空的列。
df = pd.read_csv('../table.csv.gz', nrows=10000,
             index_col=False, engine='c',
             true_values=[b'1'], false_values=[b'0'],
             usecols=usecols, dtype=dtype)