转换Pandas数据帧的数据类型以匹配另一个

时间:2018-01-19 19:24:42

标签: python pandas

我有两个具有相同列名但数据类型不同的数据框:

df1.dtypes

order                                                                                                             
int64
x                                                                                                                                
int64
y                                                                                                                     
int64

df2.dtypes

order                                                                                                            
object
x                                                                                                                    
object
y                                                                                                                    
object

数据帧比这大得多,所以我想捕获df1的名称/ dtypes并将df2转换为匹配。

2 个答案:

答案 0 :(得分:6)

dtypes + name并使用astype转换

df=pd.DataFrame({'title':list('ABC'),'TestData':['Test1(data)','t(data2)','Ts(data 3)'],'Value':[1,2,3]})
df1=pd.DataFrame({'title':list('ABC'),'TestData':['Test1(data)','t(data2)','Ts(data 3)'],'Value':['1','2','3']})

df.dtypes
Out[287]:
TestData    object
Value        int64
title       object
dtype: object
df1.dtypes
Out[288]:
TestData    object
Value       object
title       object
dtype: object

for x in df1.columns:
    df[x]=df[x].astype(df1[x].dtypes.name)
df.dtypes
Out[290]: 
TestData    object
Value       object
title       object
dtype: object

答案 1 :(得分:2)

简短版本:

df2 = df2.astype(df1.dtypes.to_dict())