在数据帧中存储数据时出现问题

2024-10-01 15:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图验证名为“productos_farmacia”的数据帧中的一些代码,这些代码来自名为“cuarta”和“promocion”的两个不同数据帧,验证似乎是正确的,但存储是错误的。 对不起,我的英语不好

for x in productos_farmacia["Código"]:
    for y in cuarta["Producto"]:
        if x == y:
            productos_farmacia.loc[x,"tipo"] = "IV"
    for z in promocion["Producto"]:
        if x == z:
            productos_farmacia.loc[x,"tipo"] = "Promocion"

Tags: 数据代码inforif错误lociv
2条回答

您可以使用列表交叉点,请尝试以下操作:

for x in list(set(productos_farmacia["Código"])&set(cuarta["Producto"])):
    [productos_farmacia.loc[x,"tipo"] = "IV" 

for x in list(set(productos_farmacia["Código"])&set(promocion["Producto"])):
    productos_farmacia.loc[x, "tipo"] = "Promocion"

避免循环,考虑多左连接^ {CD1>},条件赋值:

# RUN TWO LEFT JOIN MERGES
productos_farmacia = (productos_farmacia.merge(cuarta.reindex(["Producto"], axis="columns"),
                                               left_on=["Código"], right_on=["Producto"]), how="left")           
                                        .merge(promocion.reindex(["Producto"], axis="columns"), 
                                               left_on=["Código"], right_on=["Producto"]), 
                                               how="left", suffixes=["", "_"])
                     )

# CONDITIONALLY ASSIGN FOR NON-NULL FIELDS
productos_farmacia.loc[pd.notnull(productos_farmacia["Producto"]),"tipo"] = "IV"
productos_farmacia.loc[pd.notnull(productos_farmacia["Producto_"]),"tipo"] = "Promocion"

# DROP HELPER, MERGED COLUMNS
productos_farmacia = productos_farmacia.drop(["Producto", "Producto_"], axis="columns")

相关问题 更多 >

    热门问题