我有这些专栏:
['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: ' --'
答案 0 :(得分:1)
我可以想到两种方法,一种是传递read_csv
可以考虑视为NaN
值的值列表,这会将列表中的值转换为要转换为NaN
,以便该列的dtype保持为float
而不是object
:
df = pd.read_csv('file.csv', dtype={'Max. CPC': pd.np.float64}, na_values=[' --'])
然后,您可以将这些NaN
值转换为调用fillna
的0.00
:
df['Max. CPC'] = df['Max. CPC'].fillna(0.00)
另一种方法是像以前一样加载replace
这些值到0.00
:
df['Max. CPC'] = df['Max. CPC'].replace(' --', 0.00)