python - 检查完整性和最新版本 - Pandas Dataframe
问题描述
我有一个包含产品描述、零件编号 ID、零件总数和产品版本的数据框。
*product part_id total_parts version*
Product1 1 3 0
Product1 2 3 0
Product2 1 1 0
Product2 1 1 1
Product3 1 2 0
Product3 2 2 0
我想添加两列。如果所有部件都在 df 中(完整),一个用于标记,另一个用于标记产品的最新版本(is_the_latest)。
结果应该是这样的:
*product part_id total_parts version* complete is_the_latest
Product1 1 3 0 N Y
Product1 2 3 0 N Y
Product2 1 1 0 Y N
Product2 1 1 1 Y Y
Product3 1 2 0 Y Y
Product3 2 2 0 Y Y
版本可以在 0 到 4 范围内。部件可以在 1 到 250 范围内。如何创建这些标志?
解决方案
IIUC 尝试:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'product': {0: 'Product1', 1: 'Product1', 2: 'Product2',
3: 'Product2', 4: 'Product3', 5: 'Product3'},
'part_id': {0: 1, 1: 2, 2: 1, 3: 1, 4: 1, 5: 2},
'total_parts': {0: 3, 1: 3, 2: 1, 3: 1, 4: 2, 5: 2},
'version': {0: 0, 1: 0, 2: 0, 3: 1, 4: 0, 5: 0}
})
# Groupby product
g = df.groupby('product')
# Check if number of unique part ids matches expected number of parts
df['complete'] = np.where(
g['part_id'].transform('nunique').eq(df['total_parts']),
'Y',
'N'
)
# Check that the max version equals the current version
df['is_the_latest'] = np.where(
g['version'].transform('max').eq(df['version']),
'Y',
'N'
)
print(df)
df
:
product part_id total_parts version complete is_the_latest
0 Product1 1 3 0 N Y
1 Product1 2 3 0 N Y
2 Product2 1 1 0 Y N
3 Product2 1 1 1 Y Y
4 Product3 1 2 0 Y Y
5 Product3 2 2 0 Y Y
推荐阅读
- c - 在具有最小列号的矩阵中查找前导元素
- docker - 在 docker 容器的文本编辑器中未正确显示特殊字符
- html - 减小尺寸(掩码图像)。你能帮助我吗?
- angular - 反应形式 - 输入字段自动聚焦 - Angular
- excel - 如何遍历我的变量数组进行计数然后计算?
- python - 将表格导出为 csv 保持格式 python
- java - 两台计算机的 Java 服务器/客户端
- go - 尝试创建问题时来自 GitHub API 422 的意外错误响应
- prediction - 一种估计APP/任务执行时间的方法/工具
- c# - Unable to connect to SQL Server from a docker container