Format () возвращает строку, а не число? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть:

Date                 |  var1   |  var2 | var3 
2018-03-08 23:23:14  |   1.2   |   100 |  2.54
2018-03-09 20:00:14  |   1.0   |   100 |  2.554
2018-03-10 22:23:14  |   5.23  |   100 |  2.11
2018-03-12 18:21:14  |   4.22  |   100 |  0.2

Я хочу, чтобы:

Date                 |  var1   |  var2 | var3 
2018-03-08 23:23:14  |   1.200 |   100 |  2.540
2018-03-09 20:00:14  |   1.000 |   100 |  2.554
2018-03-10 22:23:14  |   5.230 |   100 |  2.110
2018-03-12 18:21:14  |   4.220 |   100 |  0.200

Я сделал эту функцию:

data['var1'] = data['var1'].apply(lambda x: format(x, '.3f'))
data['var3'] = data['var3'].apply(lambda x: format(x, '.3f'))

Функция Format () возвращает строкуне числоспасибо!

Ответы [ 3 ]

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

Это должно помочь.

import pandas as pd
df = pd.DataFrame({"a": [1.2, 1.0, 5.23, 4.22]})
print(df["a"].map('{:.3f}'.format))

Вывод:

0    1.200
1    1.000
2    5.230
3    4.220
Name: a, dtype: object
0 голосов
/ 28 мая 2018

У Pandas есть опция display.float_format, которая является функцией (по умолчанию None), которая принимает один float и возвращает строку, необходимую для отображения, например:

In []:
pd.options.display.float_format

Out[]:
None:

In []:
print(df)

Out[]:
   Date                     var1       var2    var3 
0  2018-03-08 23:23:14         1.20      100   2.540
1  2018-03-09 20:00:14         1.00      100   2.554
2  2018-03-10 22:23:14         5.23      100   2.110
3  2018-03-12 18:21:14         4.22      100   0.200

In []:
pd.options.display.float_format = '{:.3f}'.format  # or lambda f: format(f, '.3f')
print(df)

Out[]:
   Date                     var1       var2    var3 
0  2018-03-08 23:23:14        1.200      100   2.540
1  2018-03-09 20:00:14        1.000      100   2.554
2  2018-03-10 22:23:14        5.230      100   2.110
3  2018-03-12 18:21:14        4.220      100   0.200

Примечание: это неизменить базовое значение, но просто вызвать отображение.

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

Как вы указали, ваш код изменит тип столбцов на строку, что нарушит совместимость с числовыми операциями.На самом деле, я не думаю, что вы хотите изменить значения внутри двух столбцов, просто способ печати значений.Для этого вы можете взглянуть на обозначение стиля панд: https://pandas.pydata.org/pandas-docs/stable/style.html.

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