Python 如何向多个列添加名称?
我想为以下数据框的“季节1”和“季节2”列指定一个名称(如John):Python 如何向多个列添加名称?,python,pandas,multi-index,Python,Pandas,Multi Index,我想为以下数据框的“季节1”和“季节2”列指定一个名称(如John): Season_1 Season_2 Wins 151 120 Losses 124 110 所以它应该是这样的: John Season_1 Season_2 Wins 151 120 Losses 124 110 这可能可以通过多索引来
Season_1 Season_2
Wins 151 120
Losses 124 110
所以它应该是这样的:
John
Season_1 Season_2
Wins 151 120
Losses 124 110
这可能可以通过多索引来解决。然而,我似乎无法发现当已经存在一个数据帧时,它是如何工作的
我使用以下代码创建了此数据框:
wins = {'Wins': (151, 120)}
losses = {'Losses': (124, 110)}
dict_all = {**wins, **losses}
df = pd.DataFrame.from_dict(dict_all, orient='index', columns=['Season_1', 'Season_2'])
稍后,我将组合几个数据帧,以便得到类似的结果。我将使用pandas.merge()实现这一点:
John Adam
Season_1 Season_2 Season_1 Season_2
Wins 151 120 111 110
Losses 124 110 102 110
您需要添加一个列级别
df.columns = pd.MultiIndex.from_product([['John'], df.columns])
John
Season_1 Season_2
Wins 151 120
Losses 124 110
跟进问题1:第一季的“约翰”和第二季的“亚当”
df.columns = pd.MultiIndex.from_tuples([('John', 'Season_1'), ('Adam', 'Season_2')])
跟进问题2:5列(“A”、“B”、“C”、“D”、“E”),并将“一级”分配给“A”、“B”、“C”,将“二级”分配给“D”、“E”
谢谢!如果你想在第1季用“约翰”和第2季用“亚当”怎么办?你可以试试df.columns=pd.MultiIndex。从元组([(“约翰”,“第1季”),(“亚当”,“第2季”))这很有效,谢谢。还有一个问题:如果我有5列(“A”,“B”,“C”,“D”,“E”),我想把级别“一”分配给“A”,“B”,“C”,把级别“二”分配给“D”怎么办?”在这种情况下,我会使用df.columns=pd.MultiIndex.from_tuples([('One','A'),('One','B'),('One','C'),('Two','D'),('Two','E'))在这种情况下,我会使用df.columns=pd.MultiIndex.from_tuples([('One','A'),('One','B'),'C'),('One','Two','D'),('Two','E'))在这种情况下,还有一个后续问题(基于2.问题):如果我有一个列表['A'.我如何才能将第一个列表分配到级别“1”,将第二个列表分配到级别“2”?from_tuples工作得很好,但将级别名称写5次很烦人。。
df.columns = pd.MultiIndex.from_tuples([('One', 'A'),('One', 'B'),('One', 'C'), ('Two', 'D'),('Two', 'E')])