Как удалить ненужные `.0` в пандах? - PullRequest
0 голосов
/ 25 апреля 2018

Как я могу преобразовать компоненты столбца моего DataFrame панды из типа с плавающей запятой в фактическую строку?

Первоначально, когда я read_csv их, они отображаются в научной нотации:

например, 1.04983E + 13

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

pd.set_option('display.float_format', lambda x: '%.0f' % x)

, которая, кажется, работает изначально (без десятичной дроби)показано!):

sample_df['gpid'][0:2]
0    10498310800133
1   767838527881217

Однако, когда я пытаюсь составить из него список, он явно включает десятичную дробь .0 перед каждым компонентом

list(sample_df['gpid'])[0:2]
[10498310800133.0, 767838527881217.0]

Как я могу избежать этого нежелательного .0?[вчера весь день это раздражало ...]

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Для принудительного использования int используйте:

list(sample_df['gpid'].astype('int64'))[0:2]

Ваш столбец, очевидно, имеет тип float64 из-за чисел с плавающей запятой nan.

0 голосов
/ 25 апреля 2018

Вы, кажется, путаете объекты с их представлениями.Этот DataFrame содержит float s.Вы можете представлять их как угодно (в виде строк), но при изменении параметров отображения объекты остаются неизменными.Преобразование в список отправляет эти float объекты в питон list, который имеет собственное представление float s (не связанное с pandas) и всегда отображает .0.

Вы не можете изменить форматирование питона list.Он встроен.Вы можете преобразовать эти float s в int s, выполнив

list(map(int, sample_df['gpid']))[0:2]
[10498310800133, 767838527881217]

, но помните, что вы создаете новые объекты, а не просто меняете их представления.Это означает, что любые нецелые числа с плавающей точкой (т. Е. Не заканчиваются на .0) будут преобразованы в целые числа.

Чтобы преобразовать значения панд в строки, выполните команду

sample_df['gpid'] = sample_df['gpid'].apply(lambda f: format(f, '.0f'))

Output:

              gpid
0   10498310800133
1  767838527881217
...