2017-02-04 4 views
4

данных для pd.read_csv():Объединение нескольких строк в 1 строку

Name  Job Place Age 
John None None None 
None Doctor None None 
None None UK None 
None None None 50 
Alex None None None 
None Engr None None 
None None US None 
None None None 45 

Информация из одной строки содержится в диагонали. Есть ли способ преобразовать и свернуть диагональ в строку? Результирующий блок данных будет иметь 2 строки.

Пробовал с df.ffill()/df.bfill() и df.drop_duplicates() но это не сработает.

+0

Я думаю DF.dropnan() будет делать это –

+1

@SaulloCastro Вы имеете в виду 'df.dropna()'? Это не так. – MYGz

ответ

3

Вы можете использовать:

#change string None to NaN 
df = df.replace({'None':np.nan}) 
#multiindex 
df.index = [df.index, df.Name.notnull().cumsum() - 1] 
#remove nan by stack 
df = df.stack().reset_index(name='val') 
#pivoting 
df = df.pivot(index='Name', columns='level_2', values='val') 
print (df) 
level_2 Age  Job Name Place 
Name       
0  50 Doctor John UK 
1  45 Engr Alex US