如何在浮点列上合并两个数据框?以下是可重现的示例。我敢肯定,这与两个浮点数不相等有关,但需要一个解释,并且可能是一个更优雅的解决方案。
import pandas as pd
import numpy as np
left = pd.DataFrame({'a': np.arange(10, 11, .05)})
right = pd.DataFrame({'a': np.arange(10,11,.1), 'b': np.random.random_sample((10,))})
尝试合并这些,我得到:
pd.merge(left, right, how='left', on='a')
Out[182]:
a b
0 10.00 0.913439
1 10.05 NaN
2 10.10 NaN
3 10.15 NaN
4 10.20 NaN
5 10.25 NaN
6 10.30 NaN
7 10.35 NaN
8 10.40 NaN
9 10.45 NaN
10 10.50 NaN
11 10.55 NaN
12 10.60 NaN
13 10.65 NaN
14 10.70 NaN
15 10.75 NaN
16 10.80 NaN
17 10.85 NaN
18 10.90 NaN
19 10.95 NaN
但是,如果我重新设置'a'列的格式,则会得到所需的结果:
left.a = left.a.map(lambda x : format(x,'.2f'))
right.a = right.a.map(lambda x : format(x,'.2f'))
pd.merge(left, right, how='left', on='a')
Out[184]:
a b
0 10.00 0.913439
1 10.05 NaN
2 10.10 0.468474
3 10.15 NaN
4 10.20 0.969810
5 10.25 NaN
6 10.30 0.304893
7 10.35 NaN
8 10.40 0.375873
9 10.45 NaN
10 10.50 0.639368
11 10.55 NaN
12 10.60 0.723442
13 10.65 NaN
14 10.70 0.916725
15 10.75 NaN
16 10.80 0.366827
17 10.85 NaN
18 10.90 0.664318
19 10.95 NaN
我想知道是否有人可以解释为什么会发生这种情况,以及是否有比我的地图更简单的解决方案,请格式化lambda。
答案 0 :(得分:1)