に.CSVの最初の行をスキップ、PythonのMapReduceの - 私は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))
です
私のコードはマッパすべての行を渡すので、文字列ライン(インデックス)で始まるが、私は、ファイルを実行すると、それはエラーが出るので、浮いている合計でプレーをしたいので
TypeError: float() argument must be a string or a number, not 'generator'
マッパー機能を処理するときに、csvファイルの最初の行をスキップするにはどうすればよいですか?
通常、ループのない関数の最後の行として唯一のyieldを持つことは意味がありません。あなたは 'マッパ 'で何をしていますか? –
@StephenRauch関数内のループ本体の最後の行である場合: – schwobaseggl
@StephenRauch私はcsvファイル内のすべての行にtrip_idとtotalをマッチさせたい、csvファイルから行ごとに別のコマンド行を渡す。 python3 test.py --jobconf mapreduce.job.reduces = 1 CSTaxiTrips.csv。 mapper関数でcsvファイルを開き、next()関数を使用して最初の行をスキップする必要がありますか? – TTaa