pandas astype float 转换为int
在数据处理过程中,经常需要对数据类型进行转换以满足数据分析或数据存储的需求。Pandas 是一个强大的数据处理库,它提供了多种数据类型转换的方法。本文将详细介绍如何使用 Pandas 中的 astype
方法将浮点数(float)转换为整数(int)。这种类型转换在数据清洗和预处理中非常常见,尤其是当我们需要将浮点数表示的数值转换为整数形式以减少数据存储空间或者满足特定的数据格式要求时。
示例代码 1: 基本的 float 到 int 转换
import pandas as pd
# 创建一个包含浮点数的 DataFrame
df = pd.DataFrame({
'A': [1.0, 2.2, 3.5],
'B': [4.6, 5.1, 6.8]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 使用 astype 将浮点数转换为整数
df_int = df.astype(int)
print(df_int)
Output:
示例代码 2: 转换指定列
import pandas as pd
# 创建一个包含浮点数和字符串的 DataFrame
df = pd.DataFrame({
'A': [1.0, 2.2, 3.5],
'B': ['one', 'two', 'three']
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 只将列 'A' 从浮点数转换为整数
df['A'] = df['A'].astype(int)
print(df)
Output:
示例代码 3: 处理转换时的数据丢失
import pandas as pd
# 创建一个包含浮点数的 DataFrame
df = pd.DataFrame({
'A': [1.9, 2.5, 3.1],
'B': [4.9, 5.5, 6.2]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 使用 astype 将浮点数转换为整数,注意小数部分将被丢弃
df_int = df.astype(int)
print(df_int)
Output:
示例代码 4: 使用 round() 函数先四舍五入
import pandas as pd
# 创建一个包含浮点数的 DataFrame
df = pd.DataFrame({
'A': [1.9, 2.5, 3.1],
'B': [4.9, 5.5, 6.2]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 先四舍五入再转换为整数
df_rounded = df.round().astype(int)
print(df_rounded)
Output:
示例代码 5: 处理含有 NaN 的 DataFrame
import pandas as pd
import numpy as np
# 创建一个包含浮点数和 NaN 的 DataFrame
df = pd.DataFrame({
'A': [np.nan, 2.5, 3.1],
'B': [4.9, np.nan, 6.2]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 将浮点数转换为整数,NaN 保持不变
df_int = df.astype('Int64')
print(df_int)
示例代码 6: 使用 fillna() 处理 NaN
import pandas as pd
import numpy as np
# 创建一个包含浮点数和 NaN 的 DataFrame
df = pd.DataFrame({
'A': [np.nan, 2.5, 3.1],
'B': [4.9, np.nan, 6.2]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 先填充 NaN,然后转换类型
df_filled = df.fillna(0).astype(int)
print(df_filled)
Output:
示例代码 7: 转换时指定错误处理
import pandas as pd
# 创建一个包含浮点数和非数字字符串的 DataFrame
df = pd.DataFrame({
'A': [1.0, 'two', 3.5],
'B': [4.6, 'five', 6.8]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 尝试转换类型,使用 errors='ignore' 忽略错误
df_int = df.astype(int, errors='ignore')
print(df_int)
Output:
示例代码 8: 使用 apply() 函数进行转换
import pandas as pd
# 创建一个包含浮点数的 DataFrame
df = pd.DataFrame({
'A': [1.0, 2.2, 3.5],
'B': [4.6, 5.1, 6.8]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 使用 apply 函数将所有列的数据类型转换为整数
df_int = df.apply(lambda x: x.astype(int))
print(df_int)
Output:
示例代码 9: 结合条件语句进行转换
import pandas as pd
# 创建一个包含浮点数和条件的 DataFrame
df = pd.DataFrame({
'A': [1.0, 2.2, 3.5],
'B': [4.6, 5.1, 6.8],
'C': ['yes', 'no', 'yes']
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 只有当列 'C' 为 'yes' 时,才将列 'A' 和 'B' 转换为整数
df.loc[df['C'] == 'yes', ['A', 'B']] = df.loc[df['C'] == 'yes', ['A', 'B']].astype(int)
print(df)
Output:
示例代码 10: 使用 where() 函数进行条件转换
import pandas as pd
import numpy as np
# 创建一个包含浮点数的 DataFrame
df = pd.DataFrame({
'A': [1.0, 2.2, 3.5],
'B': [4.6, 5.1, 6.8]
}, index=['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com'])
# 使用 where 函数在条件满足时进行类型转换
df_int = df.where(df < 3, df.astype(int))
print(df_int)
Output:
以上示例代码展示了如何在不同情况下使用 Pandas 的 astype
方法将浮点数转换为整数。这些示例涵盖了从基本转换到处理复杂情况(如含有 NaN、条件转换等)的多种场景。在实际应用中,根据数据的具体情况选择合适的方法进行类型转换是非常重要的。