跳过mapper中.csv的第一行

x6yk4ghg  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(435)

我正在用python做mapreduce,我的csv文件如下所示,

trip_id taxi_id pickup_time dropoff_time ... total
0   20117   2455.0  2013-05-05   09:45:00         50.44
1   44691   1779.0  2013-06-24   11:30:00         66.78

我的密码是,

import pandas as pd
import numpy as np
from mrjob.job import MRJob

class MRCount(MRJob):

def mapper(self, _, line):
    datarow = line.replace(' ','').replace('N/A','').split(',')
    trip_id = datarow[0]
    total = datarow[14]
    total = np.float(total)
    yield ((trip_id), (total))

因为我的代码将所有行传递给mapper,所以它以字符串行(索引)开始,但是我想用total来执行,total是float,所以当我运行文件时,它会出错

TypeError: float() argument must be a string or a number, not 'generator'

在处理mapper函数时,如何跳过csv文件中的第一行?

368yc8dk

368yc8dk1#

不确定“line”到底有什么内容。对你的问题的一个简单的答案是只尝试/除了浮动。

def mapper(self, _, line):
    datarow = line.replace(' ','').replace('N/A','').split(',')
    trip_id = datarow[0]
    total = datarow[14]
    try:
        total = np.float(total)
    except TypeError:
        print("skipping line with value", datarow[14])
    else:
        yield ((trip_id), (total))

相关问题