如何在python中合并具有相同数据值和不同数据类型的数据帧

时间:2018-10-03 10:18:54

标签: python pandas merge

我有两个数据帧。

df 1:-
x  y  z  
n  1  2.0
m  3  4.0
x: dtype('object')
y: dtype('int64')
z: dtype('float64')


df 2:-
x y z a
n 1 2 h
n 2 1 k
x: dtype('object')
y: dtype('object')
z: dtype('object')
a: dtype('int64')

现在我想在x,y,z上合并这些数据帧。

我使用以下代码,由于变量的数据类型不同,我得到了一个错误。

syntax:
df2.merge(df1,on=['x','y','z'],how='left')

我不想手动更改df2数据类型。

基于df1 dtypes,我必须更改df2公共变量数据类型。

谁能帮助我解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:3)

astype使用dtypes

df2 = df2.astype(df1.dtypes)
print (df2.dtypes)
x     object
y      int64
z    float64
a     object
dtype: object

df = df2.astype(df1.dtypes).merge(df1,on=['x','y','z'],how='left')
print (df)
   x  y    z  a
0  n  1  2.0  h
1  n  2  1.0  k