【发布时间】:2018-08-24 19:42:12
【问题描述】:
下面的代码解释了这个场景, 我有一个包含 3 列的数据框(df_ticker)
import pandas as pd
df_ticker = pd.DataFrame({'Min_val': [22382.729,36919.205,46735.164,62247.61], 'Max_val': [36901.758,46716.06,62045.06,182727.05],
'Ticker':['$','$$','$$$','$$$$']})
df_ticker`
df_ticker 我的第二个数据框包含 2 列
df_values = pd.DataFrame({'Id':[1,2,3,4,5,6],'sal_val': [3098,45639.987,65487.4,56784.8,8,736455]})
df_values `
对于 df_values ['sal_val'] 中的每个值,我想检查它在 df_ticker [Max_val] 和 df_ticker [min_val] 中的哪个范围,并相应地分配 df_ticker [ticker]。
示例输出将是这样的,sample_output
在示例输出中,sal_val=3098 大于等于 Min_val=22382.729 且小于等于 max_val=36901.75,它被赋值为 ticker=$
我尝试了以下,
df_values['ticker']=df_ticker.\
loc[((df_values['sal_val']>=df_ticker['Min_val'])| (df_values['sal_val']<=df_ticker['Max_val']))]['Ticker']
df_values
失败并出现错误“ValueError:只能比较标签相同的系列对象”
有解决这个问题的办法吗?
【问题讨论】:
标签: python python-2.7 pandas numpy dataframe