我目前有一个数据框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个复杂变量的冗长行,其含义在列键中并不明确。列描述对于他们理解每一列代表什么至关重要,这就是为什么这个问题与我的问题相关。
答案 0 :(得分:1)
如果您绝对需要此功能,则可以将原始列名称放在MultiIndex的顶层,如下所示:
title = "This is a customer's {}"
cols = [(name, title.format(name)) for name in df.columns]
df.columns = pd.MultiIndex.from_tuples(cols)
您将能够像这样正常选择每一列。
答案 1 :(得分:1)
我的建议是使用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