Python DataFrame: переставить объекты и пустые значения

У меня есть Python DataFrame с 20000+ значениями, как показано ниже. И я хочу, чтобы эффективно переставить df с NaN идет после строки значений.

    IT1     IT2     IT3     IT4     IT5     IT6
0   qwe     NaN     NaN     rew     NaN     NaN
1   NaN     NaN     sdc     NaN     NaN     wer
2   NaN     NaN     NaN     NaN     NaN     NaN
3   asd     fsc     ws      zd      ews     df 
.....

в

    IT1     IT2     IT3     IT4     IT5     IT6
0   qwe     rew     NaN     NaN     NaN     NaN
1   sdc     wer     NaN     NaN     NaN     NaN     
2   NaN     NaN     NaN     NaN     NaN     NaN
3   asd     fsc     ws      zd      ews     df 
.....

Таким образом, каждая строка не может иметь значений, таких как index = 2, или всех значений, таких как index = 3. Есть ли способ, чтобы эффективно переставить мой фрейм данных df? заранее спасибо

2 ответа

Решение

Один путь, хотя и медленно, apply, dropna, а также tolist:

 df.apply(lambda x: pd.Series(x.dropna().tolist()),1)\
   .set_axis(df.columns, axis=1, inplace=False)

Выход:

   IT1  IT2  IT3  IT4  IT5  IT6
0  qwe  rew  NaN  NaN  NaN  NaN
1  sdc  wer  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN  NaN
3  asd  fsc   ws   zd  ews   df

Вы можете написать пользовательскую функцию, которая сортирует строки, а затем заменяет индекс (столбцы) столбцами в исходном порядке. Просто apply это к датафрейму построчно

def row_sort(s):
    s2 = s.sort_values()
    s2.index = s.index
    return s2

df.apply(row_sort, axis=1)
# returns:
   IT1  IT2  IT3  IT4  IT5  IT6
0  qwe  rew  NaN  NaN  NaN  NaN
1  sdc  wer  NaN  NaN  NaN  NaN
2  NaN  NaN  NaN  NaN  NaN  NaN
3  asd   df  ews  fsc   ws   zd
Другие вопросы по тегам