pandas - 从包含 json 字符串的 pandas 数据框中删除重复项
问题描述
我有一个数据框,其中一个列包含 json 字符串,例如 {'1':105, '2':105, '3':110} 在每个单元格中。当我尝试删除重复执行 df.drop_duplicates(subset=['prices'],keep='last') 它返回一个错误。我没有问题将数据框中的其他列作为子集删除重复项。但是我不能以这种格式使用此列。任何的想法?
解决方案
您正在尝试.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)
。
推荐阅读
- dart - Flutter - 如何在颤动的数字键盘中添加完成按钮
- ubuntu - tmux 未在行首显示当前工作目录
- javascript - 使用 JS 函数在光标附近生成和渲染 html 内容
- kubernetes - Kubernetes activeDeadlineSeconds 没有杀死进程
- php - 引导表单助手日期选择器默认值
- c - 为什么在 char** cast 后出现分段错误?
- python - 在 Docker 中使用 Celery 的 Flask 应用程序中的应用程序上下文错误
- c - 没有循环的函数是否可并行化?
- java - 永久编辑类路径中的 txt 文件
- python - 如何从 txt 文件中绘制字符串日期时间