如何在 pandas python 中创建多个 header?

How to have create more than one header in pandas python?

我这辈子都不知道如何使用多索引或任何其他方式为一列创建多个垂直 header。 这是我的代码:

import pandas as pd
    
genderad = [['Prescribed Taking', 1458, 4404, 14, 'Prescribed Taking', 1558, 4270, 26], ['Prescribed Not Taking', 226, 781, 1, 'Prescribed Not Taking', 171, 523, 2], ['Not Prescribed', 2302, 6672, 35, 'Not Prescribed', 1899, 4330, 26]]
df = pd.DataFrame(genderad)
df = pd.DataFrame(genderad, columns = ['Medication Status', 'Male', 'Female', 'Z', 'Medication Status', 'Male', 'Female', 'Z'])
df

此代码将我引向 table: https://i.stack.imgur.com/NRT0I.png

我想弄清楚的是如何在药物状态、男性、女性和 Z 的第一部分上方添加另一个标题为 'Depression' 的 header,同时添加另一个 header 标题为 'Anxiety' 用药状态第二部分上方,男性、女性和 Z。

否则,如果可能的话,我可以让现有的 header 只是 table 的一部分,如果可能的话合并?前四行和标题为抑郁症,对其他四行做同样的事情,除了将其标记为焦虑症?

我非常感谢能得到的任何帮助,因为我是 pandas 的新手。谢谢。

您想对列使用 MultiIndex:

columns = pd.MultiIndex.from_product((['Depression', 'Anxiety'],
                                      ['Medication Status', 'Male', 'Female', 'Z']))
df = pd.DataFrame(genderad, columns=columns)

它给出 print(df.to_string()):

              Depression                                 Anxiety                 
       Medication Status  Male Female   Z      Medication Status  Male Female   Z
0      Prescribed Taking  1458   4404  14      Prescribed Taking  1558   4270  26
1  Prescribed Not Taking   226    781   1  Prescribed Not Taking   171    523   2
2         Not Prescribed  2302   6672  35         Not Prescribed  1899   4330  26

你可以这样做:

df.columns = pd.MultiIndex.from_tuples(zip(['Depression']*4+['Anxiety']*4, df.columns))

这将导致数据框看起来像: