我正在做一个机器学习项目,现在在数据处理部分。无论如何,我有两个数据框,如图所示-
Final_Lat Final_Lot Label
0 37.23140 -121.75853 1.0
1 37.34883 -121.88834 1.0
2 37.31835 -121.85878 1.0
3 37.26027 -121.87655 1.0
4 37.30793 -121.79955 1.0
5 37.24895 -121.87519 1.0
TestLat TestLot
0 37.20000 -122.00000
1 37.20000 -121.99999
2 37.20000 -121.99998
3 37.20000 -121.99997
4 37.20000 -121.99996
5 37.20000 -121.99995
6 37.20000 -121.99994
7 37.20000 -121.99993
我想要的是将1的标签移动到出现在同一列表中的坐标,该坐标看起来像这样。并且还应包含来自第二个数据帧的信息。
Final_Lat Final_Lot Label
0 37.23140 -121.75853 1.0
1 37.34883 -121.88834 1.0
2 37.31835 -121.85878 1.0
3 37.20000 -122.00000 nan
4 37.20000 -121.99999 nan
2 37.20000 -121.99998 nan
我累了
left = pd.DataFrame({'Final_Lat': Trian['Lat'].apply(float),
'Final_Lot': Trian['Lot'].apply(float),
'Label': Trian['L'].apply(float),})
right = pd.DataFrame({'Final_Lat': Fullcoordinate['TestLat'].apply(float),
'Final_Lot': Fullcoordinate['TestLot'].apply(float)})
Final_result = pd.merge(left, right, how='right',on=['Final_Lot','Final_Lat'])
它没有用。我将不胜感激!
right = pd.DataFrame({'Final_Lat': Fullcoordinate['TestLat'](lambda x: pd.to_numeric(x, errors='coerce')).mul(1000).fillna(0).astype(int) ,
'Final_Lot': Fullcoordinate['TestLot'](lambda x: pd.to_numeric(x, errors='coerce')).mul(1000).fillna(0).astype(int) })
答案 0 :(得分:0)
所以这里的问题是与float
值合并,因为精度高,我建议将列乘以1000
转换为整数,并转换为整数,并通过以下新列转换为merge
:
old_cols = ['Final_Lat','Final_Lot']
new_cols = ['Final_Lat_int','Final_Lot_int']
Trian[new_cols] = Trian[old_cols].mul(1000).astype(int)
Final_Lat[new_cols] = Final_Lat[old_cols].mul(1000).astype(int)
如果invalid literal for int
可能存在问题,则可能存在一些非数值,一种可能的解决方案是将它们转换为NaN
,然后转换为0
:
Trian[new_cols] = Trian[old_cols].apply(lambda x: pd.to_numeric(x, errors='coerce')).mul(1000).astype(int)
Final_Lat[new_cols] = Final_Lat[old_cols].apply(lambda x: pd.to_numeric(x, errors='coerce')).mul(1000).astype(int)
Final_result = pd.merge(Trian.drop(old_cols, axis=1),
Final_Lat,
how='right',
on=new_cols)
print (Final_result)
Label Final_Lat_int Final_Lot_int Final_Lat Final_Lot
0 NaN 37200 -122000 37.2 -122.00000
1 NaN 37200 -121999 37.2 -121.99999
2 NaN 37200 -121999 37.2 -121.99998
3 NaN 37200 -121999 37.2 -121.99997
4 NaN 37200 -121999 37.2 -121.99996
5 NaN 37200 -121999 37.2 -121.99995
6 NaN 37200 -121999 37.2 -121.99994
7 NaN 37200 -121999 37.2 -121.99993