繁体   English   中英

Python 数据帧比较和分配

[英]Python Data frames Compare and Assign

我有两个 python 数据帧,一个有 3 列(范围和概率)

   Low     High     Probability
0  -0.6030 -0.5350  0.001326
1  -0.5350 -0.4700  0.000000
2  -0.4700 -0.4050  0.002653
3  -0.4050 -0.3400  0.001326
4  -0.3400 -0.2750  0.001326

另一个有价值观

   x         y     
0  -0.62
1  -0.12
2  -0.22
3  -0.45
4  -0.39

如何将 X 值与第一个 dataframe 中的 bin 进行比较以分配相应的 y(概率)值?

我已经尝试过 np.dot (如果我是正确的话,滥用预期的 function )以及带有范围键的字典。

有什么建议么?

您想要合并的 IIUC,以便x介于LowHigh之间。

您可以使用merge_asof

# merge on Low (requires both keys to be sorted)
(pd.merge_asof(df2.reset_index().sort_values(by='x'),
               df1.sort_values(by='Low'),
               left_on='x',
               right_on='Low',
              )
   # sort again on original order
   .set_index('index').sort_index()
   # ensure that x ≤ High and mask the non matching values
   .assign(y=lambda d: d['Probability'].where(d['x'].le(d['High'])))
   # drop the intermediary columns
   .drop(columns=df1.columns)
 )

Output:

          x         y
index                
0     -0.62       NaN
1     -0.12       NaN
2     -0.22       NaN
3     -0.45  0.002653
4     -0.39  0.001326

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM