我有两个具有相同列名但数据类型不同的数据框:
df1.dtypes
order
int64
x
int64
y
int64
df2.dtypes
order
object
x
object
y
object
数据帧比这大得多,所以我想捕获df1的名称/ dtypes并将df2转换为匹配。
答案 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())