Python Pandas Замена заголовка верхней строкой

В настоящее время у меня есть датафрейм, который выглядит следующим образом:

           Unnamed: 1    Unnamed: 2   Unnamed: 3  Unnamed: 4
0   Sample Number  Group Number  Sample Name  Group Name
1             1.0           1.0          s_1         g_1
2             2.0           1.0          s_2         g_1
3             3.0           1.0          s_3         g_1
4             4.0           2.0          s_4         g_2

Я ищу способ удалить строку заголовка и сделать первую строку новой строкой заголовка, чтобы новый кадр данных выглядел следующим образом:

    Sample Number  Group Number  Sample Name  Group Name
0             1.0           1.0          s_1         g_1
1             2.0           1.0          s_2         g_1
2             3.0           1.0          s_3         g_1
3             4.0           2.0          s_4         g_2

Я пробовал что-то вроде if 'Unnamed' in df.columns:, а затем создал кадр данных без заголовка df.to_csv(newformat,header=False,index=False), но, похоже, я ничего не получил.

Ответ 1

new_header = df.iloc[0] #grab the first row for the header
df = df[1:] #take the data less the header row
df.columns = new_header #set the header row as the df header

Ответ 2

Кадр данных можно изменить, просто сделав

df.columns = df.iloc[0]
df = df[1:]

Тогда

df.to_csv(path, index=False) 

Должен сделать свое дело.

Ответ 3

Если вы хотите использовать один лайнер, вы можете сделать:

df.rename(columns=df.iloc[0]).drop(df.index[0])

Ответ 4

@ostrokach ответ лучше. Скорее всего, вы захотите сохранить это при любых ссылках на фрейм данных, поэтому выиграет от inplace = True.
  df.rename(columns=df.iloc[0], inplace = True) df.drop([0], inplace = True)