Как преобразовать строку ('"12,488") в плавающее значение в панде? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть CSV-файл, в котором необработанные данные и данные в фрейме данных выглядят так:

2013-01-15 07:55:51.537174600+00:00,"37,310112",54
2013-01-15 07:55:52.707176700+00:00,"37,299696",54
2013-01-15 07:55:58.167186300+00:00,"37,310112",54

datetime                               value  IDName 
    2013-01-31 05:00:21.573676100   37,34136      54
    2013-01-31 05:00:22.150877100  37,351776      54
    2013-01-31 05:00:52.945331200   37,34136      54

Я хочу прочитать их, сделать фрейм данных и выполнить некоторые вычисления значений.Я уже пробовал:

df = pd.read_csv(filepath, parse_dates=True, index_col='datetime', low_memory=False, delimiter=',', quotechar='"')

df['value'].astype(float)

Когда я хотел заменить ',' на '.', Я использовал код:

df['value'] = df['value'].apply(lambda x: x.split()[0].replace(',', '.'))

Однако он выдал мне эту ошибку:

AttributeError: 'float' object has no attribute 'split'

Но это дает:

ValueError: could not convert string to float: '37,310112'

Я немного запутался.Кто-нибудь знает, как преобразовать значения в столбце «значение» в floar?

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Использовать параметр decimal:

df = pd.read_csv(filepath, 
                 parse_dates=True, 
                 index_col='datetime', 
                 low_memory=False,
                 decimal=',', 
                 quotechar='"')
0 голосов
/ 04 июня 2018

df ['Value']. ​​Apply (лямбда-х: float (x))

0 голосов
/ 04 июня 2018

попробуйте это:

    df['value'] = df['value'].apply(lambda x: float(str(x).replace(',', '.')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...