добавить строку дескриптора над pandas df header - PullRequest
0 голосов
/ 29 октября 2018

В настоящее время у меня есть DataFrame, df, в формате:

name  age   color
John   13   purple
Alisa  15   blue

, что позволяет мне получить доступ к определенным столбцам этого DataFrame, используя такие вещи, как df['name'], df['age'] и т. Д..

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

This is the customers name    This is the customer's age    This is the customer's favorite color     
name                          age                           color
John                          13                            purple
Alisa                         15                            blue

, но мне нужно для dfчтобы по-прежнему иметь возможность получить доступ с помощью ключей заголовка, таких как df['age'], df['color'], и эта строка дескриптора не будет затронута.

Я пробовал merge(), append() и join(),но использование этих функций обычно приводит к тому, что строка дескриптора добавляется на том же уровне (в той же строке), что и строка имени столбца, а не поверх нее.

Любое понимание будет высоко оценено.

Редактировать: Мой настоящий DataFrame будет в конечном итоге сохранен в виде файла Excel и использован другими членами моей команды.Он содержит длинный ряд из около 70 сложных переменных, значения которых не являются явными из ключей столбца.Описания столбцов необходимы для понимания того, что представляет каждый столбец, поэтому этот вопрос актуален для моей проблемы.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Мой совет - использовать CSV-файлы и использовать преимущества того факта, что данные могут записываться в CSV-файлы последовательно.Это не должно быть проблемой, так как Excel может читать файлы CSV.Вот демо:

df = pd.DataFrame([[0, 1, 2], [3, 4, 5], [6, 7, 8]],
                  columns=list('ABC'))

with open('output.csv', 'w') as fout:
    fout.write('Description_A,Description_B,Description_C')
    fout.write('\n')
    df.to_csv(fout, index=False)

Тогда вы можете прочитать ваши описания и данные отдельно:

print(pd.read_csv('output.csv', nrows=0).columns)

Index(['Description_A', 'Description_B', 'Description_C'], dtype='object')

print(pd.read_csv('output.csv', skiprows=[0]))

   A  B  C
0  0  1  2
1  3  4  5
2  6  7  8
0 голосов
/ 29 октября 2018

Если вам абсолютно необходимы эти функции, тогда вы можете поместить исходное имя столбца в качестве верхнего уровня MultiIndex следующим образом:

title = "This is a customer's {}"
cols = [(name, title.format(name)) for name in df.columns]
df.columns = pd.MultiIndex.from_tuples(cols)

enter image description here

Вы сможете выбрать каждый столбец как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...