我有两个数据帧,如下所示。我想检查这些数据帧中名为lon
和lat
的两列,如果它们匹配,则将它们合并在一起。我的意思是,如果这两列匹配,我想将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)