我有两个数据帧,如下所示。我想检查这些数据框中名为 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,但它再次不起作用。
答案 0 :(得分:2)
其中一列是 object
dtype,而另一列是 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)