Python 如何在数据框中创建多级标题?
我想创建一个数据帧标题,如下所示: 作为初学者,我只能尝试以下方法:Python 如何在数据框中创建多级标题?,python,pandas,dataframe,Python,Pandas,Dataframe,我想创建一个数据帧标题,如下所示: 作为初学者,我只能尝试以下方法: Final=pd.MultiIndex.from_product([['Before','After'],['Total', 'Time','Year'],['Day','Month']]) 如何创建标题?如有任何建议,将不胜感激。提前感谢。我认为这里的多索引有点复杂,因此可以创建传递给的元组。始终需要指定所有3个级别,因此对于Total,将使用空字符串: tuples = [('Before','Total',''),
Final=pd.MultiIndex.from_product([['Before','After'],['Total', 'Time','Year'],['Day','Month']])
如何创建标题?如有任何建议,将不胜感激。提前感谢。我认为这里的多索引有点复杂,因此可以创建传递给的元组。始终需要指定所有3个级别,因此对于Total,将使用空字符串:
tuples = [('Before','Total',''),
('Before','Time1','AM'),
('Before','Time1','PM'),
('Before','Year1','Day'),
('Before','Year1','Month'),
('After','Total',''),
('After','Time1','AM'),
('After','Time1','PM'),
('After','Year1','Day'),
('After','Year1','Month')]
Final=pd.MultiIndex.from_tuples(tuples)
df = pd.DataFrame(index=[1,2], columns=Final)
print (df)
Before After
Total Time1 Year1 Total Time1 Year1
AM PM Day Month AM PM Day Month
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
我认为这里的多重索引有点复杂,所以可以创建传递给的元组。始终需要指定所有3个级别,因此对于Total,将使用空字符串:
tuples = [('Before','Total',''),
('Before','Time1','AM'),
('Before','Time1','PM'),
('Before','Year1','Day'),
('Before','Year1','Month'),
('After','Total',''),
('After','Time1','AM'),
('After','Time1','PM'),
('After','Year1','Day'),
('After','Year1','Month')]
Final=pd.MultiIndex.from_tuples(tuples)
df = pd.DataFrame(index=[1,2], columns=Final)
print (df)
Before After
Total Time1 Year1 Total Time1 Year1
AM PM Day Month AM PM Day Month
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
这里有一个可能的解决办法。由于您有三个级别,因此需要添加三个列表,每个代码列表的索引表示级别中的一个元素
Final = pd.MultiIndex(levels=[['Before','After'],['Total', 'Time','Year'],['AM','PM','Day','Month','']],
codes=[[0,0,0,0,0,1,1,1,1,1],
[0,1,1,2,2,0,1,1,2,2],
[4,0,1,2,3,4,0,1,2,3]])
pd.DataFrame(columns = Final)
输出:
这里有一个可能的解决办法。由于您有三个级别,因此需要添加三个列表,每个代码列表的索引表示级别中的一个元素
Final = pd.MultiIndex(levels=[['Before','After'],['Total', 'Time','Year'],['AM','PM','Day','Month','']],
codes=[[0,0,0,0,0,1,1,1,1,1],
[0,1,1,2,2,0,1,1,2,2],
[4,0,1,2,3,4,0,1,2,3]])
pd.DataFrame(columns = Final)
输出: