📅  最后修改于: 2023-12-03 15:10:32.209000             🧑  作者: Mango
在 Pandas 中,数据类型是非常重要的,因为它们决定了您可以在 DataFrame 中执行哪些操作。有时,您需要更改一列或多列的数据类型,以便它们可以正确地与其他列一起使用。
下面是几种更改 DataFrame 列数据类型的方法:
可以使用 DataFrame 的 astype()
方法来更改列的数据类型。这将返回一个新的 DataFrame,其中指定列的数据类型已更改。这种方法并不会在原始 DataFrame 中更改数据类型。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': ['25', '30', '35']}
df = pd.DataFrame(data)
# 检查数据类型
print(df.dtypes)
# 更改 "age" 列的数据类型为整型
df = df.astype({'age': 'int32'})
# 再次检查数据类型
print(df.dtypes)
输出结果将会是:
name object
age object
dtype: object
name object
age int32
dtype: object
您也可以使用 astype()
方法更改多列的数据类型。只需将多个列的名称和它们应该拥有的新数据类型传递给 astype()
方法即可。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': ['25', '30', '35'], 'height': ['1.60', '1.75', '1.80']}
df = pd.DataFrame(data)
# 检查数据类型
print(df.dtypes)
# 更改 "age" 和 "height" 列的数据类型为整型和浮点型
df = df.astype({'age': 'int32', 'height': 'float64'})
# 再次检查数据类型
print(df.dtypes)
输出结果将会是:
name object
age object
height object
dtype: object
name object
age int32
height float64
dtype: object
Pandas 还提供了多个向量化函数,用于更改列中的值。to_numeric()
函数可以将一个字符串列转换为数字列。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': ['25', '30', '35'], 'height': ['1.60', '1.75', '1.80']}
df = pd.DataFrame(data)
# 检查数据类型
print(df.dtypes)
# 更改 "age" 列的数据类型为整型
df['age'] = pd.to_numeric(df['age'])
# 再次检查数据类型
print(df.dtypes)
输出结果将会是:
name object
age object
height object
dtype: object
name object
age int64
height float64
dtype: object
在某些情况下,您可能会发现将 DataFrame 转置,使用 T
属性,可以更轻松地更改列的数据类型。
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Charlie'], 'age': ['25', '30', '35'], 'height': ['1.60', '1.75', '1.80']}
df = pd.DataFrame(data)
# 检查数据类型
print(df.dtypes)
# 将 DataFrame 转置,并更改一列
df = df.T.astype({'age': 'int32'}).T
# 再次检查数据类型
print(df.dtypes)
输出结果将会是:
name object
age object
height object
dtype: object
name object
age int32
height object
dtype: object
在这个例子中,我们将 DataFrame 转置为行变成列,列变成行,然后将需要更改数据类型的列传递给 astype()
方法,最后再将 DataFrame 转置回原始位置。
无论数据类型更改的方法如何,确保您知道你需要的数据类型,并使用适当的方法更改 DataFrame 中的列。