Python Pandas DtypeWarning在导入时指定dtype选项 - 如何?

时间:2015-05-18 23:05:40

标签: 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', '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.

Columns (5)部分是什么意思?这是列位置吗? Campaign列是从0位置还是1位开始?

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

我试过了:

import pandas as pd
import numpy as np

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

print(df.head())

但是得到一个ValueError:

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

1 个答案:

答案 0 :(得分:1)

我可以想到两种方法,一种是传递read_csv可以考虑视为NaN值的值列表,这会将列表中的值转换为要转换为NaN,以便该列的dtype保持为float而不是object

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

然后,您可以将这些NaN值转换为调用fillna0.00

df['Max. CPC'] = df['Max. CPC'].fillna(0.00)

另一种方法是像以前一样加载replace这些值到0.00

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