Преобразуйте число log10, которое является строкой, в float pandas dataframe - PullRequest
0 голосов
/ 18 июня 2020

У меня здесь фрейм данных.

Year    Month   Day Extent
1   1978    10  26  10.231
2   1978    10  28  10.420
3   1978    10  30  10.557
4   1978    11  1   10.670
5   1978    11  3   10.777

Типы для моих столбцов:

Year      object
Month     object
Day       object
Extent    object
dtype: object

Я хотел бы изменить значения на float.

Ожидаемый результат (с Extent как float, а не str):

 Year   Month   Day Extent
    1   1978    10  26  10.231
    2   1978    10  28  10.420
    3   1978    10  30  10.557
    4   1978    11  1   10.670
    5   1978    11  3   10.777

EDIT: я был сбит с толку значением float и integer. Сожалею. Отредактировал мой пост выше, чтобы отразить.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Здесь вы go:

import pandas as pd
from io import StringIO

ice_data = pd.read_csv(StringIO("""Year    Month   Day Extent
1   1978    10  26  10.231
2   1978    10  28  10.420
3   1978    10  30  10.557
4   1978    11  1   10.670
5   1978    11  3   10.777"""), sep='\s+')
ice_data['Extent'] = ice_data['Extent'].astype(int)
print(ice_data)

Вывод:

   Year  Month  Day  Extent
1  1978     10   26      10
2  1978     10   28      10
3  1978     10   30      10
4  1978     11    1      10
5  1978     11    3      10
1 голос
/ 18 июня 2020

Вы можете использовать np.floor:

ice_data['Extent'] = np.floor(ice_data.Extent).astype(int)

Или простой //1:

ice_data['Extent'] = (ice_data.Extent//1).astype(int)

Обновление : Для строкового типа:

ice_data['Extent'] = ice_data.Extent.str.extract('^(\d+)')[0].astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...