更改熊猫数据框中一列或多列的数据类型
原文:https://www.geesforgeks.org/change-data-type-for-in-pandas-data frame/
让我们看看改变熊猫数据框中一列或多列的数据类型的不同方法。
方法#1: 使用数据框. astype()
我们可以传递任何 Python、Numpy 或 Pandas 数据类型来将数据框的所有列更改为该类型,或者我们可以传递以列名作为键、以数据类型作为值的字典来更改所选列的类型。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [1.1, '1.0', '1.3', 2, 5] })
# converting all columns to string type
df = df.astype(str)
print(df.dtypes)
输出:
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [1.1, '1.0', '1.3', 2, 5] })
# using dictionary to convert specific columns
convert_dict = {'A': int,
'C': float
}
df = df.astype(convert_dict)
print(df.dtypes)
输出:
方法#2: 使用 DataFrame.apply()
我们可以将 pandas.to_numeric、pandas.to_datetime 和 pandas.to_timedelta 作为参数传递给apply()
函数,将一列或多列的数据类型分别更改为 numeric、datetime 和 timedelta。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': [1, 2, 3, '4', '5'],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [1.1, '2.1', 3.0, '4.1', '5.1'] })
# using apply method
df[['A', 'C']] = df[['A', 'C']].apply(pd.to_numeric)
print(df.dtypes)
输出:
方法#3: 使用data frame.expert_objects() 该方法通过推断“对象”类型列的数据类型来尝试软转换。非对象和不可转换的列保持不变。
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': ['a', 'b', 'c', 'd', 'e'],
'C': [1.1, 2.1, 3.0, 4.1, 5.1]
}, dtype ='object')
# converting datatypes
df = df.infer_objects()
print(df.dtypes)
输出: