Python read_csv конвертирует данные во время проблемы импорта со значением "-" в данных - PullRequest
0 голосов
/ 28 сентября 2018

Я некоторое время боролся с этой проблемой.Я наконец нашел причину, по которой это происходит, но пока не могу найти решение.

Я импортирую файл data.csv, скопированный из разных ресурсов в Интернете.Большинство из них являются строками и должны быть удалены, например, "%".Это работает как шарм, используя пользовательский конвертер.

Но как только столбец содержит строку с "-" (без значения), он выдает ошибку "Файл" D: test.py ", строка 14, в convert_percentage return float (new_val)ValueError: не удалось преобразовать строку в число с плавающей точкой: '-' "

Я использую следующие строки кода:

import pandas as pd
import numpy as np

def convert_percentage(val):
    new_val = val.replace(',','').replace('%', '')
    return float(new_val)


df = pd.read_csv('data.csv', na_values=['-'],   
            converters={
                'Perf Month': convert_percentage, 
                'Perf Week': convert_percentage,
                'Perf Quarter': convert_percentage,
                'Perf Half Y': convert_percentage,
                'Payout': convert_percentage,

                })

1 Ответ

0 голосов
/ 28 сентября 2018

Я предлагаю вам сделать:

def convert_percentage(val):
    new_val = val.replace(',','').replace('%', '')
    try:
        return float(new_val)
    except ValueError:
        return new_val

Вы, очевидно, можете добавить больше возврата в зависимости от того, что вы хотите вернуть.Если вы считаете, что if следует проверять каждый раз, сделайте условный возврат.Но если ошибка исключительная (по статистике), блок try/except является лучшим выбором`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...