es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Concatenar dataframes de pandas

Estoy tratando de concatenar varios dataframes horizontalmente sub_df para formar uno grande df.

Los dataframes sub_df tienen el formato:

n1 n2 n3 ... n1000 special_string
Id
8 20 10 45 ... 100 >50,<200,2009-09-24

Todas las columnas de n1 a n1000 son numéricas, excepto la última columna special_string que es una cadena especial con caracteres especiales.

El dataframe esperado df es:

Id   n1   n2   n3   ...   n1000   special_string
8    20   10   45   ...   100     >50,<200,2009-09-24
9    10   30   15   ...   10      <0,>-20,2009-11-02
10   20   15   25   ...   50      >40,>200,2010-03-04
...

En un bucle for, he agregado los dataframes sub_df usando:

sub_df_list = []
...

sub_df_list.append(sub_df)

Esto da como resultado la lista de sub_df. Luego intenté convertir sub_df_list en un dataframe df usando:

sub_df_list1= pd.concat(sub_df_list)

pero se produjo un error:

TypeError: Se esperaba una tupla, se recibió una cadena

Intenté restablecer el índice de los dataframes sub_df con sub_df= sub_df.reset_index() pero el error persistió.

También noté que funcionaría si eliminaba la columna special_string en los dataframes sub_df, pero no cuando la columna está presente. ¿Por qué se produjo este error? Cualquier contribución es apreciada.

Edición:

No estoy seguro si esto podría ser la razón. Los dataframes sub_df originales solo consisten en las columnas n1 a n1000. La última columna se agregó a sub_df con:

    sub['x10081'] = some_value_i

¿Podría este cambio en el tipo de datos de alguna manera de tupla a cadena que no sea reconocido por pd.concat?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error se produjo porque la columna special_string contiene caracteres especiales que no son reconocidos por la función pd.concat(). La función intenta concatenar los dataframes de una cierta manera, pero los caracteres especiales interfieren con este proceso y causan que la función produzca un error.

    Para resolver este problema, puede eliminar la columna special_string de los dataframes sub_df antes de concatenarlos usando pd.concat(). Una vez concatenados los dataframes, puede agregar la columna special_string de nuevo al dataframe resultante df utilizando las funciones join() o merge() de pandas.

    Alternativamente, puede preprocesar la columna special_string en cada dataframe sub_df para eliminar los caracteres especiales antes de concatenar los dataframes. Esto se puede hacer utilizando expresiones regulares u otras técnicas de manipulación de cadenas en Python.

    En cuanto a la edición en la pregunta, agregar una columna a un dataframe usando df[new_col_name] = some_value no debería cambiar el tipo de datos del dataframe o sus columnas. Sin embargo, si el nuevo valor no está en el mismo formato que los valores en las columnas existentes, podría causar problemas con la concatenación u otras operaciones que requieren tipos de datos uniformes.

Comments are closed.