pandas считывает данные из Excel с помощью многоуровневых имен столбцов и concat

#python #excel #pandas

#python #excel #pandas

Вопрос:

У меня есть Excel со следующим форматом

 Product      Product_type    
ID           ColumnA        ColumnB        Start Date
10              12              14         01/01/2020 
 

Мне нужно иметь возможность считывать Excel в фрейм данных pandas и объединять многоуровневые столбцы, чтобы результат был

 Product_ID     Product_type_ColumnA        ColumnB        Start Date
10              12                            14          01/01/2020 
 

в некоторых Excel столбцов верхнего уровня может быть один или несколько. Ему нужно только сопоставить с именем столбца непосредственно под ним.

например, ввод

 Product          
ID           ColumnA        ColumnB        Start Date
10    
 

и требуемый вывод

 Product_ID      ColumnA        ColumnB        Start Date
10              12              14         01/01/2020 
 

Ответ №1:

Это не очень элегантно, но вы могли бы просто импортировать его как обычно, затем добавить первую строку к именам столбцов, а затем удалить первую строку:

 # Import df (this would be from excel for you)
df = pd.DataFrame([[1,2,3],[4,5,6]], columns = ['ID', '', ''])

# Pick off first row and make into a list
col_names = df.values.tolist()[0]

# Put together the new column names
new_cols = []
for i in range(len(df.columns)):
    new_cols.append(str(df.columns[i])   '_'   str(col_names[i]))

# Replace the column names
df.columns = new_cols

# Remove the first row of the df
df = df[1:]