Pandas 在dataframe中将列值用作列名

Pandas 在dataframe中将列值用作列名,pandas,Pandas,我有以下数据帧: df = pd.DataFrame([{'animal': 'dog', 'years':10}, {'animal': 'dog', 'years':5}, {'animal': 'cat', 'years':3}, {'animal': 'cat', 'years':7}]) 给我: animal years 0 dog 10 1

我有以下数据帧:

df = pd.DataFrame([{'animal': 'dog', 'years':10}, 
                   {'animal': 'dog', 'years':5},
                   {'animal': 'cat', 'years':3},
                   {'animal': 'cat', 'years':7}])
给我:

  animal  years
0    dog     10
1    dog      5
2    cat      3
3    cat      7
鉴于猫和狗的数量总是相同的,我如何才能将其转化为:

       dog   cat
years  10     3
        5     7
我的最终目标是绘制一个箱线图,显示每种动物类型的年分布。

用于每种动物的计数器,并通过和重塑:


这回答了你的问题吗@不幸的是,维洛罗没有。它列出了pandas中似乎需要聚合结果的pivot方法。我不需要聚合。耶斯雷尔的回答完美地回答了我的问题,直截了当地直截了当地指出了问题所在,而没有进行冗长的解释。
df1 = (df.set_index([df.groupby('animal').cumcount(), 'animal'])['years']
         .unstack()
         .rename_axis(None, axis=1))
print (df1)
   cat  dog
0    3   10
1    7    5