【发布时间】:2020-04-16 20:17:33
【问题描述】:
所以我有以下数据集。
data = [[1, 'abc', 25, 'V', {'REVISION': 'ac', 'VBAT': '3.000', 'POWER_MODE': 'buck', 'TEST': 'ldo_xtal', 'CS': 'bb', 'MODULE_NAME': 'ildo_xtal'}], [1, 'abc',25, 'V', {'REVISION': 'ac', 'VBAT': '3.000', 'POWER_MODE': 'buck', 'TEST': 'ldo_xtal', 'CS': 'bb', 'MODULE_NAME': 'ildo_xtal'}], [1, 'abc', 25, 'MV', {'REVISION': 'ac', 'VBAT': '3.000', 'POWER_MODE': 'buck', 'TEST': 'ldo_xtal', 'CS': 'bb', 'MODULE_NAME': 'ildo_xtal'}], [1, 'abc', 25, 'V', {'DEBUG': '1', 'REVISION': 'ac', 'VBAT': '3.000', 'POWER_MODE': 'buck', 'MODULE_NAME': 'iosc_xtal32m', 'TEST': 'xtal32m', 'CS': 'bb', 'XTAL32M_53X_OSC.VI': 1}]]
Dataframe = pd.DataFrame(data, columns = ['Chip_Number', 'Test_Key', 'Temp', 'Test_Data_Unit', 'Test_Label'] )
Dataframe
在我的数据集中,最后一列“Test_Label”在每个行中包含字典。
我想根据“Chip_Number”、“Test_Key”、“Temp”、“Test_Data_Unit”和“Test_Label”列从我的数据集中删除重复的行(首先出现)。
我使用以下代码删除数据集中第一个出现的重复项。但是,我遇到了一个错误。
#Drop the duplicates from the column of Dataframe["Chip_Number","Test_Key","Temp","Test_Data_Unit"] and only keep the last one
Dataframe.duplicated(subset = ["Chip_Number","Test_Key","Temp","Test_Data_Unit","Test_Label"]).sum()
Dataframe.loc[Dataframe.duplicated(subset = ["Chip_Number","Test_Key","Temp","Test_Data_Unit","Test_Label"], keep='last'),:]
Dataframe = Dataframe.drop_duplicates(subset = ["Chip_Number","Test_Key","Temp","Test_Data_Unit","Test_Label"],keep='last')
pd.set_option('display.max_colwidth', 10000)
Dataframe
错误,我在运行上面的代码后得到。
TypeError: unhashable type: 'dict'
但是,当我使用上面相同的代码而不使用 "Test_Label" 列时。它工作正常。但是,那不是我的本意。
有人可以提出一个想法,我该如何改进上面的代码?
【问题讨论】:
标签: python-3.x dictionary duplicates