Leer CSV Transpose Pandas

Tengo un conjunto de datos que se ve como sigue:

Name : joe Job : Crazy Consultant Hired : 4/12/2011 3:38:55 AM Stats : crazy, bald head Pay : $5000 Monthly Name : Matt Job : Crazy Receptionist Hired : 4/12/2014 3:38:55 PM Stats : crazy, Lots of hair Name : Adam Job : Crazy Drinker Hired : 4/12/2017 3:38:55 AM Stats : crazy, unknown Term : 4/12/2017 3:38:55 PM 

Leí y obtengo los datos de la siguiente manera:

 df = pd.read_csv(r"pathtomycsv.csv", encoding="UTF-16", delimiter='\s+:').transpose() 

Salida de lo anterior: (solo como ejemplo)

 Name Job Hired Stats Name Job Hired Stats Joe Crazy Consultant 4/12/2011 3:38:55 AM crazy, bald head Matt Crazy Consultant 4/12/2011 3:38:55 AM crazy, bald head 

En última instancia, me gustaría tomar mi conjunto de datos desde arriba y transformarlo en un conjunto de datos como el de abajo combinando todos los encabezados juntos a continuación:

 Name Job Hired Stats Pay Term Joe Crazy Consultant 4/12/2011 3:38:55 AM crazy, bald head $5000 Monthly N/A Matt Crazy Receptionist 4/12/2014 3:38:55 PM crazy, Lots of hair N/AN/A Adam Crazy Drinker 4/12/2017 3:38:55 AM crazy, unknown N/A 4/12/2017 3:38:55 PM 

Puedes intentarlo así:

 import pandas as pd df = pd.read_csv('file_name',sep='\s+:\s+',header=None).pivot(columns=0, values=1) df.index = [df.index, df.Name.notnull().cumsum() - 1] df = df.stack().reset_index(name='val') df = df.pivot(index='Name', columns=0, values='val') df 

Salida:

introduzca la descripción de la imagen aquí

El problema surge porque tienes más dos puntos en la fecha. Utilice "\s+:\s+" como separador. (Sí, puede ser una expresión regular).

El siguiente código me sirve para convertir su archivo en la tabla que desea. Supongo que ‘Nombre’ es siempre la primera fila de un conjunto.

 df = pd.read_csv("yourfile", delimiter='\s+:\s+',header=None) df = df.reset_index() df['index'][df[0]!='Name'] = np.nan df['index'] = df['index'].fillna(method='ffill').astype(int) df.set_index(['index',0])[1].unstack().set_index('Name') #0 Hired Job Pay #Name #joe 4/12/2011 3:38:55 AM Crazy Consultant $5000 Monthly #Matt 4/12/2014 3:38:55 PM Crazy Receptionist None #Adam 4/12/2017 3:38:55 AM Crazy Drinker None