GOOGLE ADS

miércoles, 20 de abril de 2022

Convertir datos planos en un árbol

Se tiene una tabla del siguiente tipo:

identificación | título. | Identificación de los padres





















identificacióntítulo.Identificación de los padres
245frutasuno
4Todos0

Solución del problema

Para la próxima vez, proporcione más datos, ¡con los datos proporcionados no es posible una cadena!

Creo que esto debería hacer lo que quieres:

from io import StringIO
import pandas as pd
# Your data faked
# -1 marks "no parent", if you change this, you have to change the if clause
data_file = StringIO("""id|title|parent_id
0|abc|-1
1|def|0
2|ghi|0
3|jkl|1
4|mno|2
8|pqr|4
""")
def handle_value(search_id: int, df: pd.DataFrame):
tmp_value = df.loc[search_id] # Get the element with the given id (your index)
print(tmp_value["title"], end="")
if tmp_value["parent_id"] >= 0:
print(" -> ", end="")
handle_value(search_id=tmp_value["parent_id"], df=df)
else:
print()
# Read your file
table = pd.read_table(data_file, sep="|", index_col="id", dtype={"parent_id": int})
print(table)
handle_value(8, df=table)

Las salidas:

 title parent_id
id
0 abc -1
1 def 0
2 ghi 0
3 jkl 1
4 mno 2
8 pqr 4

pqr -> mno -> ghi -> abc

Algunos puntos:

  • No detecto ningún error, si ingresa un número incorrecto, se bloquea

  • Si tiene una conexión circular (el índice 0 tiene el padre 1 y el índice 1 tiene el padre 0), falla
  • No hay comentarios.:

    Publicar un comentario

    Flutter: error de rango al acceder a la respuesta JSON

    Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...