合并panda数据帧时出现数据类型错误



我有两个数据帧,如下所示。我想检查这些数据帧中名为lonlat的两列,如果它们匹配,则将它们合并在一起。我的意思是,如果这两列匹配,我想将DF1数据(存储id和存储名称(读取到DF2数据中(因为DF2要大得多(。

DF1
store_id    store_name          lon                    lat
0      place_1     McDonald's        13.31543.              52.67649
1      place_2     McDonald's   13.4683480000000007     52.5471599999999981
DF2
device_id   lat    lon      utc_timestamp      addidas  apple.         bmw  female        male 
0       1   52.67649    13.31543    1.609460e+12    97745.0 141158.0    78690.0   85002.0       2.0 
1       1   52.67649    13.31542    1.609460e+12    97745.0 141158.0    78690.0   85002.0       2.0 
2       2   52.57837    13.58217    1.609459e+12    45843.0 164532.0    114955.0  85003.0       3.0 

我写了下面的代码:但它给了我错误,有人能帮我吗?

df3 = df1.merge(df2, how = 'inner', on = ['lat', 'lon'])
ERROR: You are trying to merge on object and float64 columns. If you wish to proceed you should use pd.concat

我使用了pd.concat,但它无法再次工作。

其中一列为object数据类型,而另一列则为float64。您必须选择一种数据类型。假设我们太懒了,找不到哪列属于哪种类型:

df1['lat'] = df1.lat.astype(float)
df2['lat'] = df2.lon.astype(float)

df1['lat'] = df1.lat.astype(str)
df2['lat'] = df2.lon.astype(str)

最新更新