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