Изменение типа данных в столбце в Pandas DataFrame

Чтобы изменить тип данных столбцов DataFrame, используйте метод astype(), infer_objects() или pd.to_numeric.

В этом руководстве мы подробно рассмотрим некоторые из этих процессов на примерах.

Метод 1: использование astype()

DataFrame.astype() приводит этот DataFrame к указанному типу данных. Ниже приводится синтаксис метода.

astype(dtype, copy=True, errors='raise', **kwargs)

Нас интересует только первый аргумент dtype – это тип данных или dict имени столбца.

Итак, давайте использовать метод astype() с аргументом dtype, чтобы изменить тип данных одного или нескольких столбцов DataFrame.

Как изменить тип данных одного столбца?

Давайте сначала начнем с изменения типа данных только для одного столбца.

В следующей программе мы изменим тип данных столбца a на float.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	[[21, 72, 67],
	[23, 78, 62],
	[32, 74, 54],
	[52, 54, 76]],
	columns=['a', 'b', 'c'])

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype({'a': np.float})

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b      int64
c      int64
dtype: object

DataFrame
      a   b   c
0  21.0  72  67
1  23.0  78  62
2  32.0  74  54
3  52.0  54  76

Как изменить тип данных нескольких столбцов?

Теперь давайте изменим тип данных более чем для одного столбца. Все, что нам нужно сделать, это предоставить больше пар column_name: datatype key:value в аргументе метода astype().

В следующей программе мы изменим тип данных столбца a на float, а b на int8.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	[[21, 72, 67],
	[23, 78, 62],
	[32, 74, 54],
	[52, 54, 76]],
	columns=['a', 'b', 'c'])

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype({'a': np.float, 'b': np.int8})

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b       int8
c      int64
dtype: object

DataFrame
      a   b   c
0  21.0  72  67
1  23.0  78  62
2  32.0  74  54
3  52.0  54  76

Как изменить тип данных всех столбцов?

Если вы хотите изменить тип данных всех столбцов DataFrame, вы можете просто передать этот тип данных в качестве аргумента методу astype() без словаря.

В следующей программе мы изменим тип данных всех столбцов на float.

import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	[[21, 72, 67],
	[23, 78, 62],
	[32, 74, 54],
	[52, 54, 76]],
	columns=['a', 'b', 'c'])

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of column
df = df.astype(np.float)

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    int64
b    int64
c    int64
dtype: object

New Datatypes
a    float64
b    float64
c    float64
dtype: object

DataFrame
      a     b     c
0  21.0  72.0  67.0
1  23.0  78.0  62.0
2  32.0  74.0  54.0
3  52.0  54.0  76.0

Метод 2: pd.to_numeric

Предположим, вы импортировали DataFrame из Excel, CSV или другого источника и получили все строковые значения для элементов DataFrame. Типом данных этих столбцов может быть объект. Далее преобразуем типы данных всех этих столбцов в соответствующие числовые типы данных.

Используйте следующий синтаксис для преобразования типа данных столбцов DataFrame в числовые.

df = df.apply(pd.to_numeric)
import pandas as pd
import numpy as np

#initialize a dataframe
df = pd.DataFrame(
	[['21', '72', '67'],
	['23', '78', '62'],
	['32', '74', '54'],
	['52', '54', '76']],
	columns=['a', 'b', 'c'])

print('Previous Datatypes\n', df.dtypes, sep='') 

#change datatype of all columns
df = df.apply(pd.to_numeric)

#print results
print('\nNew Datatypes\n', df.dtypes, sep='') 
print('\nDataFrame\n', df, sep='')

Вывод:

Previous Datatypes
a    object
b    object
c    object
dtype: object

New Datatypes
a    int64
b    int64
c    int64
dtype: object

DataFrame
    a   b   c
0  21  72  67
1  23  78  62
2  32  74  54
3  52  54  76

Обобщая это руководство по Python, мы узнали, как изменить тип данных столбцов в DataFrame.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *