Python 如何合并浮动上的数据帧?
如何在一个浮点列上合并两个数据帧?下面是一个可复制的示例。我确信这与两个浮点列不相等有关,但我希望得到一个解释,可能还有一个更优雅的解决方案Python 如何合并浮动上的数据帧?,python,pandas,numpy,Python,Pandas,Numpy,如何在一个浮点列上合并两个数据帧?下面是一个可复制的示例。我确信这与两个浮点列不相等有关,但我希望得到一个解释,可能还有一个更优雅的解决方案 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,))}) 尝
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。您可以使用
它将执行左合并,您可以设置一个公差值。太完美了!非常感谢。
pd.merge_asof(left, right, on='a', tolerance = 0.01)