Meg*_*gan 9 python merge pandas
我有两个数据框,我试图合并.
数据帧A:
col1 col2 sub grade
0 1 34.32 x a
1 1 34.32 x b
2 1 34.33 y c
3 2 10.14 z b
4 3 33.01 z a
Run Code Online (Sandbox Code Playgroud)
数据帧B:
col1 col2 group ID
0 1 34.32 t z
1 1 54.32 s w
2 1 34.33 r z
3 2 10.14 q z
4 3 33.01 q e
Run Code Online (Sandbox Code Playgroud)
我想在col1和col2上合并.我使用以下语法进行了pd.merge:
pd.merge(A, B, how = 'outer', on = ['col1', 'col2'])
Run Code Online (Sandbox Code Playgroud)
但是,我认为由于许多行被删除,我遇到了加入col2浮点值的问题.有没有办法使用np.isclose来匹配col2的值?当我在任一数据帧中引用col2的特定值的索引时,该值具有比数据帧中显示的更多的小数位.
我希望结果如下:
col1 col2 sub grade group ID
0 1 34.32 x a t z
1 1 34.32 x b s w
2 1 54.32 s w NaN NaN
3 1 34.33 y c r z
4 2 10.14 z b q z
5 3 33.01 z a q e
Run Code Online (Sandbox Code Playgroud)
您可以使用一个小巧的黑客工具-由多个浮列的一些常数像100,1000...,转换列int,merge由恒和最后鸿沟:
N = 100
#thank you koalo for comment
A.col2 = np.round(A.col2*N).astype(int)
B.col2 = np.round(B.col2*N).astype(int)
df = pd.merge(A, B, how = 'outer', on = ['col1', 'col2'])
df.col2 = df.col2 / N
print (df)
col1 col2 sub grade group ID
0 1 34.32 x a t z
1 1 34.32 x b t z
2 1 34.33 y c r z
3 2 10.14 z b q z
4 3 33.01 z a q e
5 1 54.32 NaN NaN s w
Run Code Online (Sandbox Code Playgroud)