当我们在处理数据时,经常会遇到相同数据类型不一致的问题,这时候就需要进行数据类型的转换。pandas提供了丰富的数据类型转换方法来解决这个问题。
一、基础方法
pandas中的数据类型转换基本方法是astype()。用法如下:
df['column_name'] = df['column_name'].astype('new_data_type')
这里的column_name是需要转换数据类型的列名,new_data_type是目标数据类型名称。举个例子,将数据类型从int转换为float:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4], 'B': [0.1, 0.2, 0.3, 0.4]})
df['A'] = df['A'].astype(float)
二、批量转换
如果想批量转换多列数据类型,上面的方法就显得很麻烦。比较简单的方法是用select_dtypes()方法选出需要转换类型的一组列,并使用apply()方法对这组列进行类型转换。具体如下:
int_columns = df.select_dtypes(include=['int']).columns
float_columns = df.select_dtypes(include=['float']).columns
df[int_columns] = df[int_columns].apply(pd.to_numeric, downcast='integer')
df[float_columns] = df[float_columns].apply(pd.to_numeric, downcast='float')
这里select_dtypes()方法会帮助我们选出需要转型的列让我们方便地对这一组列进行类型转换。
三、自定义转换方法
有时我们需要自定义类型转换方法,这是就可以使用apply()方法以函数为参数对数据进行转换。如下示例是将字符串表中的一列转为datetime格式:
df = pd.DataFrame({'date_str': ['2021-01-01','2021-01-02','2021-01-03'], 'value': [1, 2, 3]})
df['date_datetime'] = df['date_str'].apply(lambda x: pd.to_datetime(x, format='%Y-%m-%d'))
四、转换结果的判断
在进行数据类型转换之后,我们应该检查结果是否符合要求。方法与series.isin()
类似,pandas提供了方法series.dtype
属性来检查数据类型是否正确。例如我们将下面的一列转换为datetime类型:
df = pd.DataFrame({'date_str': ['2021-01-01','2021-01-02','2021-01-03'], 'value': [1, 2, 3]})
df['date_datetime'] = df['date_str'].apply(lambda x: pd.to_datetime(x, format='%Y-%m-%d'))
print(df['date_datetime'].dtype)
输出结果应该为datetime64[ns]
。
以上是关于pandas数据类型转换的实现攻略,包括基础转换方法、批量转换、自定义方法和转换结果判断等内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas 数据类型转换的实现 - Python技术站