您可以在 df_b['N0_YLDF']
的(排序后的)值之间找到中点,这些中点就是截止值。然后使用这些截止值调用 pd.cut
,将 df_a['N0_YLDF']
中的值进行分类,其中截止值为分区边界:
import numpy as np
import pandas as pd
df_a = pd.DataFrame({ 'N0_YLDF': [11.79, 7.86, 5.78, 5.35, 6.32, 11.79, 6.89, 10.74]})
df_b = pd.DataFrame({ 'N0_YLDF':[6.29, 2.32, 9.10, 4.89, 10.22, 3.80, 5.55, 6.36] })
edges, labels = np.unique(df_b['N0_YLDF'], return_index=True)
edges = np.r_[-np.inf, edges + np.ediff1d(edges, to_end=np.inf)/2]
df_a['N0_DWOC'] = pd.cut(df_a['N0_YLDF'], bins=edges, labels=df_b.index[labels])
print(df_a)
产量
In [293]: df_a
Out[293]:
N0_YLDF N0_DWOC
0 11.79 4
1 7.86 2
2 5.78 6
3 5.35 6
4 6.32 0
5 11.79 4
6 6.89 7
7 10.74 4
要在两个数据框上使用
N0_DWOC
进行连接,可以使用以下代码:
print(df_a.join(df_b, on='N0_DWOC', rsuffix='_b'))
这将产生
N0_YLDF N0_DWOC N0_YLDF_b
0 11.79 4 10.22
1 7.86 2 9.10
2 5.78 6 5.55
3 5.35 6 5.55
4 6.32 0 6.29
5 11.79 4 10.22
6 6.89 7 6.36
7 10.74 4 10.22