有一个pandas df和一个字典,它的键从这个df中获得。例如:
data = {'Type': [1, 1, 2, 3, 2] ,
'Vol' : [10, 20, 15, 15, 15] ,
'Cost' : [500, 300, 200, 250, 400] ,
'IsSold' : [1, 1, 1, 1, 0]}
df = pd.DataFrame(data)
capacity = {key : 500 for key in df.Type.unique()}
sub_dataframe将只创建一行数据:
sample_df = df.sample()
现在,我想这样做:
if sample_df['Cost'] <= capacity[sample_df['Type']] :
#some procedure
但是当我运行它时,它返回一个错误:
TypeError: 'Series' objects are mutable, thus they cannot be hashed
你能帮我吗?
LHS和RHS表达式都是Pandas series,而不是'来自Pandas数据框架的值'。一种可能的解决方案是获取已采样的Series的索引,并使用它来检索值:
index = sample_df.index[0]
sample_df['Cost'][index] <= capacity[sample_df['Type'][index]]
错误声明Series类型的对象不能用作字典的键,因为它是可变的。Python中的可变对象不能被散列,因此不能用作字典键。