2016-09-02 5 views
-1

Я пытаюсь создать pd.DataFrame, но у меня возникли проблемы с правилом ввода данных. У меня есть два массива numpy, которые являются типами float.Pandas dataframe - проблема с типом данных

Они были созданы из списка координат (х & у), как показано здесь:

# Take coordinates from list and convert to a numpy array 
x_vector = np.asarray(x_list, dtype=float) 
y_vector = np.asarray(y_list, dtype=float) 

Для справки Вот пример того, что x_vector выглядит следующим образом:

[-2248925.48185815 -2248925.48185815 -2248080.13621823 -2262432.04991849 
-2250570.32692157 -2237312.76315587 -2237312.76315587 -2245650.16260083 
-2245650.16260083 -2249323.93572129 -2247050.83128422 -2253151.83634956] 

Я рад при форматировании здесь возникает проблема, когда я пытаюсь добавить x_vector и y_vector в рамку данных pandas.

Моя логика такова, что у меня есть 201 записей LAT/Лон так мой index равно что, то я добавляю columns, соответствующий моим данным, в конце концов я поставил dtype, чтобы соответствовать мои координаты (с плавающей точкой).

Вот мой код:

df = pd.DataFrame(index=range(1, 202, 1), columns=['lat', 'lon', 'ws_daily_max'], dtype=float) 

df['lat'] = y_vector 
df['lon'] = x_vector 

Однако при печати df к консоли, я получаю эти значения, где после запятой значительно сдвинуты. Что пошло не так, почему изменились значения lat/lon? Я ожидал, что они будут такими же, как значения поплавка выше, т. Е. (-2248925.48185815)?

index lat lon ws_daily_max 1 1.895464e+06 -2.248925e+06 NaN 2 1.895464e+06 -2.248925e+06 NaN

Я действительно запутался, что произошло. Сообщение об ошибке не напечатано, но это не результат, которого я ожидал. Любая ясность в отношении того, почему и как исправить это, будет весьма признательна.

Помогите мне, StackExchange. Ты моя единственная надежда.

ответ

3

Это научное обозначение того же числа. 1.895464e + 06 означает 1.895464 * 10^6 = 1895465. Таким образом, десятичное место не сдвигалось, просто представление. Если вы хотите изменить внешний вид номеров, посмотрите на http://pandas.pydata.org/pandas-docs/stable/options.html. Надеюсь, это поможет.

+0

Хороший ответ. Обратите внимание, что принятый ответ на [этот вопрос] (http://stackoverflow.com/questions/21137150/format-suppress-scientific-notation-from-python-pandas-aggregation-results) показывает, как это сделать. –

+0

@AmiTavory интересно, хотя я согласен с принятым ответом на эту тему, преобразование в строку для эстетических целей - не лучшая практика. – Nikolai

+0

@Nikolai Я считаю, что человек, отвечающий туда, полностью согласился с вами. Обратите внимание на первую часть ответа, хотя - 'pd.set_option ('display.float_format', lambda x: '% .3f'% x)' - это просто устанавливает параметр отображения. –

Смежные вопросы