如何基于列的返回值使用列值作为字典的键来过滤熊猫df的行

时间:2019-05-22 15:28:54

标签: python pandas dataframe dictionary

我有一个数据帧,当使用特定列的值将字典返回的值用作字典键以返回键值时,我需要过滤掉行。

我已经能够基于列的值过滤行,但是当我尝试以类似的方式在字典中使用列的值时,it会返回错误。

TypeError: 'Series' objects are mutable, thus they cannot be hashed
indexNames = df[ accounting_type_dict[df['fund_id']] == 'ETFs' ].index
df.drop(indexNames , inplace=True)

2 个答案:

答案 0 :(得分:2)

使用map然后过滤

newdf=df[df['fund_id'].map(accounting_type_dict) == 'ETFs'].copy()

答案 1 :(得分:1)

您可以尝试用dict中的相应值替换该列。 (根据DataFrame的大小,您可能需要使用map而不是replace。)

indexNames = df[ df['fund_id'].replace(accounting_type_dict) == 'ETFs' ].index
df.drop(indexNames , inplace=True)