Ответ 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
В настоящее время у меня есть датафрейм, который выглядит следующим образом:
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)
, но, похоже, я ничего не получил.
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
Кадр данных можно изменить, просто сделав
df.columns = df.iloc[0]
df = df[1:]
Тогда
df.to_csv(path, index=False)
Должен сделать свое дело.
Если вы хотите использовать один лайнер, вы можете сделать:
df.rename(columns=df.iloc[0]).drop(df.index[0])
@ostrokach ответ лучше. Скорее всего, вы захотите сохранить это при любых ссылках на фрейм данных, поэтому выиграет от inplace = True.
df.rename(columns=df.iloc[0], inplace = True)
df.drop([0], inplace = True)