Python数据类型警告在导入时指定数据类型选项-如何?

Python数据类型警告在导入时指定数据类型选项-如何?,python,csv,pandas,Python,Csv,Pandas,我有以下专栏: ['Campaign', 'Ad group', 'Keyword', 'Status', 'Match type', 'Max. CPC', 'Quality score', 'Impressions', 'Clicks', 'CTR', 'Avg. CPC', 'Cost', 'Avg. position', 'Converted clicks', 'Click conversion rate', 'Cost / converted click', 'Bounce rate'

我有以下专栏:

['Campaign', 'Ad group', 'Keyword', 'Status', 'Match type', 'Max. CPC', 'Quality score', 'Impressions', 'Clicks', 'CTR', 'Avg. CPC', 'Cost', 'Avg. position', 'Converted clicks', 'Click conversion rate', 'Cost / converted click', 'Bounce rate', 'Pages / session', 'Avg. session duration (seconds)', '% new sessions']
我收到的错误是:

Warning (from warnings module):
  File "C:\Python34\lib\site-packages\pandas\io\parsers.py", line 1164
    data = self._reader.read(nrows)
DtypeWarning: Columns (5) have mixed types. Specify dtype option on import or set low_memory=False.
列(5)
部分是什么意思?那是纵队的位置吗?
Campaign
列是否从位置0或1开始

此外,我怀疑此错误是因为我的
Max.CPC
列在少数区域中有
'-'
而不是零。我希望此列数据类型为浮点型。在读取CSV时,如何将这些
'-'
转换为
0.00
,并将此列设置为浮点数据类型

我试过:

import pandas as pd
import numpy as np

df = pd.read_csv('file.csv', dtype={'Max. CPC': pd.np.float64})

print(df.head())
但是得到一个值错误:

ValueError: could not convert string to float: ' --'

有2种方法我可以想到,一个是传递一个可以考虑为“代码>楠< /COD>值的值列表,这将将列表中的这些值转换为<代码>楠< /代码>,使该列的dType保持为<代码>浮点,而不是<代码>对象< /代码>:

df = pd.read_csv('file.csv', dtype={'Max. CPC': pd.np.float64}, na_values=[' --'])
然后,您可以将这些
NaN
值转换为
0.00
调用:

另一个是像以前一样加载,并将这些值设置为
0.00

df['Max. CPC'] = df['Max. CPC'].replace(' --', 0.00)

您可以传递
na_values=['-']
这将把这些值转换为
naN
,然后数据类型将浮动,或者在加载到0.00后替换这些值,然后列的数据类型将是浮动的,对于您的列错误,您需要发布原始输入,以便我们重现您的错误error@EdChum非常感谢。我不知道na_的价值观。在read_csv中有很多参数。谢谢你帮助我完成我的学习任务。如果有人感兴趣,为了清楚起见,这是我的最后一行:
df=pd.read_csv('file.csv',na_values=['-'],dtype={'Max.CPC':pd.np.float64})
这里唯一的事情是
NaN
不是您想要的,但是您可以在读取csv后调用
fillna
,将值设置为0.00,这假设您希望将所有
NaN
设置为0.00,可能包括最初出现在csvOK中的任何
NaN
值,我想我现在明白了。创建
df
后,我需要像这样使用
fillna
NaN
设置为
0.00
df['Max.CPC']=df['Max.CPC'].fillna(0.00)
。谢谢您的解决方案。“第(5)栏”是什么意思?列索引5以0开头?
df['Max. CPC'] = df['Max. CPC'].replace(' --', 0.00)