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