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

时间:2021-03-19 19:47:29

标签: python pandas dataframe

我有两个数据帧,如下所示。我想检查这些数据框中名为 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,但它再次不起作用。

1 个答案:

答案 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)