Je suis en train de faire MapReduce en python et mon fichier csv ressemble ci-dessous,python MapReduce - Saut de la première ligne du .csv dans le mappeur
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
et mes codes sont,
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))
Depuis mon code passe toutes les lignes Mapper, il commence par la ligne de chaîne (index) mais je veux le faire jouer avec un total qui est flotter quand je lance le fichier, il obtiens une erreur
TypeError: float() argument must be a string or a number, not 'generator'
Comment puis-je ignorer la première ligne du fichier CSV lors du traitement de la fonction de mappage?
En général, cela n'a pas de sens d'avoir le seul rendement comme dernière ligne d'une fonction sans boucles. Que fais-tu avec 'mapper'? –
@StephenRauch si elle est la dernière ligne d'un corps en boucle dans la fonction :) – schwobaseggl
@StephenRauch Je veux correspondre trip_id et totale dans chaque ligne dans le fichier csv, j'ai une autre ligne de commande pour passer la ligne par ligne du fichier csv, python3 test.py --jobconf mapreduce.job.reduces = 1 CSTaxiTrips.csv. Dois-je ouvrir le fichier csv dans la fonction mapper et utiliser la fonction next() pour ignorer la première ligne? – TTaa