Estoy creando un marco de datos de pandas leyendo datos de MySql. Siempre habrá una fila en el marco de datos a la vez. Desde este marco de datos, intento acceder a algunas columnas.

 try:
        if str(df_from_sql_query_1['age']) != "":
            age_temp = str(df_from_sql_query_1['age'])
            age = age_temp.strip()
        else:      
            print("Age is missing")
....
....

Pero cuando hago una impresión, el valor del índice se agrega al valor de edad real.

print("Age is", age)

Salida:

Age is 0    32.0

Mientras que espero que la salida sea:

Age is 32.0

¿Qué cambios debo hacer para obtener la salida deseada?

1
Sumit 22 ene. 2018 a las 16:39

3 respuestas

La mejor respuesta

Cuando está haciendo df_from_sql_query_1['age'] pandas todavía accede a él como una columna y no como el valor. necesitas especificar la fila. Si tiene una fila, acceda a la fila 0 con

age_temp = df_from_sql_query_1.loc[0,'age']
3
DeanLa 22 ene. 2018 a las 13:55

Puede transformar cualquier marco de datos en una cadena sin un índice transformándolo como tal

print df.to_string(index=False)

Puede verificar los otros parámetros en la documentación .

Alternativamente, como su marco de datos siempre contiene una sola fila, puede darle una oportunidad (no sé acerca de su función df_from_sql_query_1 ())

 age = str(df_from_sql_query_1[0]['age']).strip()
0
Rufrage 22 ene. 2018 a las 13:44

Creo que este reemplazo debería funcionar:

age_temp = str(df_from_sql_query_1['age'].values[0])
age = age_temp.strip()
0
Toby Petty 22 ene. 2018 a las 13:53