суммировать два столбца, вычислить максимальное, минимальное и среднее значение в MapReduce - PullRequest
1 голос
/ 05 мая 2020

У меня есть образец кода картографа, как показано ниже, ключ - UCO, значение - TaxiTotal, которое должно быть суммой двух столбцов, TaxiIn и TaxiOut, как суммировать эти два столбца?

мое текущее решение TaxiIn + TaxiOut дает результат вставки, например 333 + 444 = 333444, мне нужно, чтобы это было 777 , как написать код?

#! /usr/bin/env python

import sys

# -- Airline Data
# Year, Month, DayofMonth, DayOfWeek, DepTime, CRSDepTime, ArrTime, CRSArrTime, UniqueCarrier, FlightNum,
# TailNum, ActualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, Origin, Dest,         Distance, TaxiIn,
# TaxiOut, Cancelled, CancellationCode, Diverted, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay

for line in sys.stdin:
    line = line.strip()
    unpacked = line.split(",")
    Year, Month, DayofMonth, DayOfWeek, DepTime, CRSDepTime, ArrTime, CRSArrTime, UniqueCarrier, FlightNum, TailNum, ActualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, Origin, Dest, Distance, TaxiIn,TaxiOut, Cancelled, CancellationCode, Diverted, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay = line.split(",")
    UCO = "-".join([UniqueCarrier, Origin])
    results = [UCO, TaxiIn+TaxiOut]
    print("\t".join(results))

1 Ответ

1 голос
/ 05 мая 2020

Преобразовать TaxiIn + TaxiOut в:

int(TaxiIn) + int(TaxiOut)

См. Пример ниже:

In [1612]: TaxiIn = '333'                                                                                                                                                                                   

In [1613]: TaxiOut = '444'                                                                                                                                                                                  

In [1614]: TaxiIn + TaxiOut                                                                                                                                                                                 
Out[1614]: '333444'

In [1615]: int(TaxiIn) + int(TaxiOut)                                                                                                                                                                       
Out[1615]: 777

У вас не может быть числовых сумм строки, для этого преобразовать str в int или float.

ваш код должен быть:

results = [UCO, str(int(TaxiIn) + int(TaxiOut))]
print("\t".join(results))
...