首页 > 解决方案 > 从包含 json 字符串的 pandas 数据框中删除重复项

问题描述

在此处输入图像描述我有一个数据框,其中一个列包含 json 字符串,例如 {'1':105, '2':105, '3':110} 在每个单元格中。当我尝试删除重复执行 df.drop_duplicates(subset=['prices'],keep='last') 它返回一个错误。我没有问题将数据框中的其他列作为子集删除重复项。但是我不能以这种格式使用此列。任何的想法?

标签: pandas

解决方案


您正在尝试.drop_duplicates在 dict 类型上使用,这就是它给出unhashable type dict错误的原因。你可以做:

# sample data
df = pd.DataFrame({'prices': [{'1':54, '2':22, '3':12}, 
                              {'1':54, '2':22, '3':12},
                              {'1':44, '2':41, '3':11}],
                   'flag':[1,2,3]})

# remove duplicates
df  = (pd.concat([df, df.prices.apply(pd.Series)], axis=1)
       .drop_duplicates(subset=['1','2','3'], keep='last')
       .drop(['1','2','3'], axis=1))

                        prices  flag
1  {'1': 54, '2': 22, '3': 12}     2
2  {'1': 44, '2': 41, '3': 11}     3

这里唯一的技巧是使用 . 将 dict 转换为数据框df.prices.apply(pd.Series)


推荐阅读