Как читать CSV в научной нотации с большой буквы E в Python? - PullRequest
0 голосов
/ 30 мая 2018

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

5.64E-4   0.1259   3.556E-4   300
2.98E-4   4.7E-3   5.322E-4   270

Мне нравится панда

df1 = pandas.read_csv(filepath[0], header=None, delim_whitespace=True, lineterminator='\r')

Но я понял, что панды сохраняют DataFrame в виде строки,поскольку это не знает, что означает E.Могу ли я как-то импортировать файл CSV и преобразовать его в числовую запись, чтобы я мог построить его?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

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

Возможное решение - использовать to_numeric с errors='coerce' для анализа не числового значения до NaN с с apply, поскольку он работает только для одного столбца (Series):

print (df)
         0       1         2    3
0  5.64E-4  0.1259  3.556E-4  300
1  2.98E-4  4.7E-3       AAA  270

df = df.apply(pd.to_numeric, errors='coerce')
print (df)
          0       1         2    3
0  0.000564  0.1259  0.000356  300
1  0.000298  0.0047       NaN  270
0 голосов
/ 30 мая 2018

Используйте следующее для принудительного вывода этих значений в виде значений с плавающей запятой при чтении:

import pandas
import numpy as np

pandas.read_csv(filepath[0], header=None,
                delim_whitespace=True, lineterminator='\r',
                dtype=np.float64)

Это работает с прописной буквой 'E'.

Пример

pd.DataFrame({'a':['5.64E-4', '0.1259', '3.556E-4'],
              'b':['a', 'b', 'c']}, dtype=np.float64)

Выход

          a  b
0  0.000564  a
1  0.125900  b
2  0.000356  c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...