📌  相关文章
📜  更改 Pandas Dataframe 中一列或多列的数据类型(1)

📅  最后修改于: 2023-12-03 15:10:32.209000             🧑  作者: Mango

更改 Pandas DataFrame 中一列或多列的数据类型

在 Pandas 中,数据类型是非常重要的,因为它们决定了您可以在 DataFrame 中执行哪些操作。有时,您需要更改一列或多列的数据类型,以便它们可以正确地与其他列一起使用。

下面是几种更改 DataFrame 列数据类型的方法:

1. 通过修改元数据更改列数据类型

可以使用 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
2. 通过修改元数据更改多列数据类型

您也可以使用 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
3. 通过向量化函数更改一列数据类型

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
4. 转置 DataFrame 来转换一列或多列数据类型

在某些情况下,您可能会发现将 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 中的列。