Как поменять местами две строки фрейма данных Pandas?

#python-3.x #pandas #dataframe

#python-3.x #pandas #фрейм данных

Вопрос:

Предположим, у меня есть этот фрейм данных :

     0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24
  

Я хочу поменять местами позиции строк 1 и 2.

Есть ли собственная функция Pandas, которая может это сделать? Спасибо!

Ответ №1:

Используйте rename с пользовательским dict и sort_index

 d = {1: 2, 2: 1}
df_final = df.rename(d).sort_index()

Out[27]:
    0   1   2   3   4
0   0   1   2   3   4
1  10  11  12  13  14
2   5   6   7   8   9
3  15  16  17  18  19
4  20  21  22  23  24
  

Ответ №2:

Насколько мне известно, для этого нет встроенной функции Pandas.

Но вот пользовательская функция:

 # Input
df = pd.DataFrame(np.arange(25).reshape(5, -1))

# Output
def swap_rows(df, i1, i2):
    a, b = df.iloc[i1, :].copy(), df.iloc[i2, :].copy()
    df.iloc[i1, :], df.iloc[i2, :] = b, a
    return df

print(swap_rows(df, 1, 2))
  

Вывод:

     0   1   2   3   4
0   0   1   2   3   4
1  10  11  12  13  14
2   5   6   7   8   9
3  15  16  17  18  19
4  20  21  22  23  24
  

Приветствия!

Ответ №3:

Попробуйте numpy flip:

 df.iloc[1:3] = np.flip(df.to_numpy()[1:3], axis=0)

df

        0   1   2   3   4
    0   0   1   2   3   4
    1   10  11  12  13  14
    2   5   6   7   8   9
    3   15  16  17  18  19
    4   20  21  22  23  24
  

Ответ №4:

 df1=df.copy()
df1.iloc[1,:],df1.iloc[2,:]=df.iloc[2,:],df.iloc[1,:]
df1
  

введите описание изображения здесь