python - 熊猫从列表中添加缺失的行
问题描述
我有一个如下所示的数据集:
data = [
{'frame_id': 111, 'circle': 3, 'square': 5, 'triangle': 7},
{'frame_id': 222, 'circle': 1, 'square': 10, 'triangle': 0}
]
我有一个 frame_ids 列表:
frame_ids = [111, 222, 333, 444]
我想用 0 值填写缺少的 frame_id 的记录
结果应该是:
res = [
{'frame_id': 111, 'circle': 3, 'square': 5, 'triangle': 7},
{'frame_id': 222, 'circle': 1, 'square': 10, 'triangle': 0},
{'frame_id': 333, 'circle': 0, 'square': 0, 'triangle': 0},
{'frame_id': 444, 'circle': 0, 'square': 0, 'triangle': 0}
]
在这里我正在加载我的数据框:
import pandas as pd
df = pd.DataFrame(data)
我怎样才能继续使用 pandas 实现结果?
解决方案
DataFrame.set_index
与DataFrame.reindex
和一起使用DataFrame.reset_index
:
df1 = df.set_index('frame_id').reindex(frame_ids, fill_value=0).reset_index()
print (df1)
frame_id circle square triangle
0 111 3 5 7
1 222 1 10 0
2 333 0 0 0
3 444 0 0 0
print (df1.to_dict('records'))
[{'frame_id': 111, 'circle': 3, 'square': 5, 'triangle': 7},
{'frame_id': 222, 'circle': 1, 'square': 10, 'triangle': 0},
{'frame_id': 333, 'circle': 0, 'square': 0, 'triangle': 0},
{'frame_id': 444, 'circle': 0, 'square': 0, 'triangle': 0}]
推荐阅读
- python - 如何改进我的可视化图?观察点太近了
- nginx - 如果内容类型正确,如何将 nginx 配置为仅返回来自代理的响应?
- python - Python3 RLE 字符
- whitespace - zsh:未找到匹配项:[:空格:]
- c# - 如何制作匿名公共异步任务
- amazon-web-services - AWS PowerShell 错误 执行此操作的权限不足
- asp.net-mvc - ِِ如何访问mvc 5中_viewstart.chtml中的viewbag?
- apache-spark-sql - SparkSQL Query Join中的Distribute By vs Shuffle
- python-3.x - 使用 TPUEstimator 的 TensorFlow 2.1:RuntimeError:从 TPU 输出的所有张量都应保留批量大小维度,但获得了标量张量
- excel - 如何使用 PowerQuery 将 Excel 连接到 Oracle