书中第二章,2.2.1小节,用pandas模块筛选Supplier Name列中名字包含Z,或者Cost列中值大于600.0的所有列。
csv文件中,Cost(成本列)的单位是美元,前面有一个美元符号‘$’,在excel中是货币形式,也就是大于千位的,会用‘,’进行分隔。所以,要想办法将Cost列的文本转化为浮点型数值才能跟600.0进行比较。问题也就出在这里,下面先列出问题:
问题展示:
按照书中给的代码,完整的敲下来是这样的:
import pandas as pd
file1 = 'supplier_data.csv'
file2 = 'output_file.csv'
data_frame = pd.read_csv(file1)
data_frame['Cost'] = data_frame['Cost'].str.strip('$').astype(float)
pandas3 = data_frame.loc[(data_frame['Supplier Name'].str.contains('Z')) | (data_frame['Cost'] > 600.0), :]
pandas3.to_csv(file2, index = False)
运行结果:
巴拉巴拉一堆之后:
ValueError: coul