gpt4 book ai didi

python - 根据 sqlalchemy 模型的唯一约束检查​​数据帧记录

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:48 24 4
gpt4 key购买 nike

我有一个 SQLAlchemy 模型和一个 pandas 数据框,其中有很少的记录,这些记录应该加载到该 sqlalchemy 模型表示的表中。但在加载之前,我需要检查数据框中的所有行是否满足“UniqueConstraint”

我的模型和数据框如下:

型号:

class Flight(Base):
__tablename__ = 'flight'

flight_id = Column(Integer)
from_location = Column(String)
to_location = Column(String)
schedule = Column(String)
__table_args__ = (UniqueConstraint('flight_id', 'schedule', name='flight_schedule'),)

数据框:

flight_id | from_location  | to_location |  schedule |  
1 | Vancouver | Toronto | 3-Jan |
2 | Amsterdam | Tokyo | 15-Feb |
4 | Fairbanks | Glasgow | 12-Jan |
9 | Halmstad | Athens | 21-Jan |
3 | Brisbane | Lisbon | 4-Feb |
4 | Johannesburg | Venice | 12-Jan |

在这种情况下,检查器函数应返回 false,因为数据框中的第 3 条和第 6 条记录违反了唯一约束(同一航类不能同时安排 2 条不同的航线)。有关如何执行此操作的任何提示/解决方案?

最佳答案

我认为需要DataFrame.duplicated用于检查每个指定列的重复 any检查至少一个 True:

print (df.duplicated(['flight_id', 'schedule']).any())
True

详细信息:

print (df.duplicated(['flight_id', 'schedule']))
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool

如果您需要过滤有问题的行,请使用 boolean indexing和参数 keep=False 用于返回所有欺骗:

print (df[df.duplicated(['flight_id', 'schedule'], keep=False)])
flight_id from_location to_location schedule
2 4 Fairbanks Glasgow 12-Jan
5 4 Johannesburg Venice 12-Jan

详细信息:

print (df.duplicated(['flight_id', 'schedule'], keep=False))
0 False
1 False
2 True
3 False
4 False
5 True
dtype: bool

关于python - 根据 sqlalchemy 模型的唯一约束检查​​数据帧记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49409592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com