Concatenar columnas basadas en cierto grupo

Tengo dataframe df1 como este:

            Schema                table Name             temp
0           schema1               table1             col1 INT(1,2) NOT NULL
1           schema1               table1             col2 INT(3,2) NOT NULL
2           schema1               table1             col3 SMALLINT(6,2) NULL
3           schema1               table1             col4 SMALLINT(9,2) NULL
4           schema2               table2             col6 CHAR(20,2) NULL
5           schema2               table2             col7 CHAR(20,4) NULL
6           schema2               table2             col8 CHAR(6,5) NULL
7           schema2               table2             col9 CHAR(6,3) NULL

En este marco de datos tengo dos esquemas y tablas diferentes ( table1y table2). Quiero construir create tableuna declaración a partir de esto.

Entonces, del marco de datos anterior, necesito un nuevo marco de datos que tendrá 2 filas (ya que 2 tablas diferentes en df1) y el valor sería

df2:

    ddl_statement
0   create table schema1.table1 (col1 INT(1,2) NOT NULL,col2 INT(3,2) NOT NULL,col3_Nbr SMALLINT(6,2) NULL,col4 SMALLINT(9,2) NULL)

1   create table schema2.ITEM_DESC2 (col6 CHAR(20,2) NULL,col7 CHAR(20,4) NULL,Col8 CHAR(6,5) NULL,col9 CHAR(6,3) NULL)

¿Cómo puedo lograr esto sin usar loop?

Answer

Uso groupbyy cuerdas f:

df2 = df.groupby(['Database/Schema Name', 'entity Name'])['temp'] \
        .apply(lambda x: f"create table {x.name[0]}.{x.name[1]} ({', '.join(x)})") \
        .reset_index(drop=True).to_frame('ddl_statement')

Producción:

>>> df2
                                                                                                                                                  ddl_statement
0  create table schema1.ITEM_DESC1 (Item_Nbr INT(1,2) NOT NULL, Old_Nbr INT(3,2) NOT NULL, Order_Dept_Nbr SMALLINT(6,2) NULL, Acct_Dept_Nbr SMALLINT(9,2) NULL)
1           create table schema2.ITEM_DESC2 (Primary_Desc CHAR(20,2) NULL, Secondary_Desc CHAR(20,4) NULL, Color_Desc CHAR(6,5) NULL, Size_Desc CHAR(6,3) NULL)