Панды: Работа со столбцом с несколькими типами данных - PullRequest
2 голосов
/ 29 мая 2019

У меня есть столбец в моем фрейме данных df, который содержит значения типа float и str:

df['ESTACD'].unique()

Output:
array([11.0, 32.0, 31.0, 35.0, 37.0, 84.0, 83.0, 81.0, 97.0, 39.0,
   38.0, 40.0, 34.0, 7.0, 17.0, 16.0, 14.0, 82.0, 8.0, '11', '40',
   '31', '39', '68', '97', '32', '33', '37', '38', '83', '84', '93',
   '35', '81', '67', '07', '80', '71', 'A3', '14', '17', '22', '34',
   '36', '82', '08'], dtype=object)

Я хочу преобразовать все значения этого столбца в строку типа. Использование astype(str) здесь недостаточно, так как в итоге мы получаем такие значения, как '11 .0', '32 .0 'и т. Д.

Единственный другой способ, которым я мог придумать, это использовать цикл for:

for i in range(len(df)):
    if (type(df['ESTACD'][i]) == float) or (df['ESTACD'][i].startswith('0')):
        df['ESTACD'][i] = str(int(df['ESTACD'][i]))

Однако на больших наборах данных это занимает много времени. Есть ли способ реализовать это без цикла?

1 Ответ

3 голосов
/ 29 мая 2019

Я думаю, здесь должно быть очень быстро использовать чистый Python, как:

df['ESTACD'] = [str(int(x)) if isinstance(x, float) else x for x in df['ESTACD']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...