[英]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
介于Low
和High
之间。
您可以使用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.