pandas 通过将panda Dataframe 中的值作为字典键传递来访问字典值

wko9yo5t  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(128)

有一个Pandasdf和一个字典,它的键从这个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

你能帮我吗?

n1bvdmb6

n1bvdmb61#

LHS和RHS表达式都是Pandas系列,而不是“Pandas数据框中的值”。可能的解决方案之一是获取已采样的系列的索引,并使用它来检索值:

index = sample_df.index[0]
sample_df['Cost'][index] <= capacity[sample_df['Type'][index]]

这个错误指出Series类型的对象不能用作字典的键,因为它是可变的,Python中的可变对象不能被散列,因此不能用作字典的键。

相关问题