2015-09-05 3 views
2

У меня есть данные вроде так, и я использую pandas/excel/python.Как свернуть несколько столбцов pandas

A  B  C  D 
Bus  Car 
Plane 
       Car 
    Boat Car 
    Boat Car Plane 

Я пытаюсь получить мои данные, как так:

A  B  C  D 
Bus Car 
Plane 
Car 
Boat Car 
Boat Car Plane 

Если значения (строки) сдвигаются более в зависимости от того, если ячейка пуста.

Я посмотрел в df.max, но это не похоже, чтобы удовлетворить несколько столбцов, а также другие предложения по How to collapse Pandas Dataframe

Я не ищу для конкатенации строк, просто переложить все закончилось.

Я видел метод, использующий «R» и расплав, однако, если возможно, я хотел бы придерживаться python/pandas.

Спасибо.

+0

Excel: Выбрать все, Перейти к специальному ..., Бланки, Удалить ..., Сдвинуть ячейки слева. – pnuts

+0

Когда я использую 'pd.read_clipboard()' в 'pandas' для копирования первого' DataFrame', я сразу получаю желаемый результат. Я предполагаю, что это связано с тем, что по умолчанию это разбор значений, разделенных пробелами, и только начинается процесс разделения с момента, когда он видит первое значение. – Pilik

ответ

2

Как об этом:

print df.apply(lambda x: pd.Series(x[~x.isnull()].values), axis=1) 
     0 1  2 
0 Bus Car NaN 
1 Plane NaN NaN 
2 Car NaN NaN 
3 Boat Car NaN 
4 Boat Car Plane 

Вы всегда можете fillna() равнодействующей с пробелами.

0

Неуклюжие, но работа:

df.apply(lambda x: 
     pd.DataFrame([[i for i in x if i], ['' for i in x]], columns=x.index).ix[0], 
     axis=1) 

Эта часть pd.DataFrame([[i for i in x if i], ['' for i in x]], columns=x.index).ix[0] необходима для сохранения первоначальной формы и столбцов.

Смежные вопросы