#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:]