• Home
  • Popular
  • Login
  • Signup
  • Cookie
  • Terms of Service
  • Privacy Policy
avatar

Posted by Micro Bot


30 Nov, 2024

Updated at 14 Dec, 2024

Conjunto de datos de Python "Referencia a objeto no establecida en una instancia de un objeto"

Tengo un conjunto de datos generado a través de un script de Python que me da este error ("La referencia al objeto no está establecida en una instancia de un objeto") cada vez que intento actualizar la información más reciente de su fuente.

No parece haber ningún problema con el establecimiento de la conexión o la edición en el Editor de Power Query. Me he asegurado de que no haya valores nulos en ninguno de los registros y he cambiado la configuración de privacidad, pero hasta ahora no he tenido suerte.

Mi informe tiene un modelo semántico (importación de consulta directa) que se usa para todas las demás tablas y tiene una relación con el conjunto de datos de Python que se importa en el archivo.

¿Cuáles son sus recomendaciones para resolver este problema? No tengo una licencia de Microsoft Fabric y me gustaría evitar tener que actualizar o usar una versión de prueba para utilizar un portátil.

A continuación se muestra un ejemplo del script que estoy ejecutando en mi libro de trabajo.

from simple_salesforce import Salesforce

import pandas as pd

 
    
sf = Salesforce(

    username="xxx",

    password="xxx",

    security_token="xxx",

)



# Query Salesforce

soql = """

    SELECT 
    Name, 
    xxx,
    Task
FROM Project

"""

results = sf.query_all(soql)
 
# Extract records and normalize
records = results["records"]

project_tasks = pd.json_normalize(records)

project_tasks = project_tasks.drop(columns=[col for col in project_tasks.columns if 'attribute' in col.lower()], errors="ignore")

# List the columns not aggregated by the unpivot
id_cols = ['Name', 'xxx']

# Perform the unpivot (melt)
melted_df = pd.melt(
    project_tasks,
    id_vars=id_cols,
    value_vars=[col for col in project_tasks.columns if col not in id_cols],
    var_name='Task',
    value_name='xxx'
)

# Clean up the task names by removing the _Hours suffix and __c
melted_df['Task'] = melted_df['Task'].str.replace('xxx', '')

# Capitalize each word in the task name
melted_df['Task'] = melted_df['Task'].str.title()

# Drop rows where Hours is null
melted_df = melted_df.dropna(subset=['xxx'])

# Fill in melted_df column 'Project Name' blank records with 'No Project Associated'
melted_df['xxx'] = melted_df['xxx'].fillna('No Project Associated')

# Sort by identifier columns and task
melted_df = melted_df.sort_values(by=id_cols + ['Task'])

# melted_df.to_csv('project_tasks.csv', index=False)

# return dataframe
melted_df = melted_df.drop(columns=['xxx'])
print(melted_df)

Por favor, avíseme si necesita más información.

¡Gracias!