Python Map уменьшить - PullRequest
       8

Python Map уменьшить

0 голосов
/ 11 мая 2019

Я пытаюсь заставить этот код работать в Python Anaconda Spyder. Я должен использовать Map -Reduce для кода

У меня есть файл CSV

Я пытаюсь избавиться от $ суммы платежа, чтобы преобразовать ее в float

Также мне нужно построить график для этого

так

PayeeVendorName PayeAmount и Average оплата произведена

Я пробовал следующий код, но не знаю, как работать с $ подписать и преобразовать в число с плавающей точкой из строки, чтобы я мог разобрать его в карту, уменьшить

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import pandas as pd

import matplotlib.pyplot as plt

from mrjob.job import MRJob

class MRResearch(MRJob):

    def removeDollar(self, PaymentAmount):
        amount = PaymentAmount.str.replace ("$").as("").astype(float)
        return amount


    def mapper(self, key, line):

        ( CheckNumber, CheckDate, PayeeNumber, PayeeVendorName, PaymentAmount, ServiceTypeId, +
         ServiceTypeDesc, PurchaseOrder, PDMCU, DepartmentNbr, DepartmentName, BusinessUnitCode, +
         BusinessUnitName, VendorName, VendorAddress, VendorAddress_2, City, StateID, ZipCode) = line.split(',')

        PaymentMade = self.removeDollar(PaymentAmount)

        yield PayeeVendorName, float(PaymentMade)

    def reducer(self, PayeeVendorName, PaymentMade):
        total = 0
        numElement = 0
        for x in PaymentMade:
            total += x
            numElement += 1
        yield PayeeVendorName, total / numElement
if __name__ == '__main__':
    MRResearch.run()

    #   remove_dollar_sign = df["Amount"] = df["PAYMENT AMOUNT"].apply(lambda title: title).str.replace("$", "").str.replace(",","").astype(float

1 Ответ

0 голосов
/ 11 мая 2019

, если PaymentAmount - строка, тогда ее конвертация во float будет такой, как показано ниже

 amount = float(PaymentAmount.replace('$',''))
...