Python取消堆叠值错误:索引包含重复条目,无法重新整形



我正在尝试卸载df:

Site   Month   Class   Data
A      11      Bike    20
A      11      Car     200
A      12      Bike    30
A      12      Car     300
B      11      Bike    40
B      11      Car     400
B      12      Bike    50
B      12      Car     500

下面是我想要的数据帧:

Site   Month   Bike   Car   
A      11      20     200
A      12      30     300
B      11      40     400
B      12      50     500

当我尝试df.set_index(['Site','Month'](.unstack((时,它报告了";ValueError:索引包含重复的条目,无法重新整形";因为在df中设置索引之后,第一行和第二行将具有相同的索引A/11。

有没有其他方法可以让我得到想要的结果?您可以使用以下代码生成df:

df = pd.DataFrame({
'Site': {0: 'A', 1: 'A', 2: 'A', 3: 'A', 4:'B', 5:'B', 6:'B', 7:'B'},
'Month': {0: 11, 1: 11, 2: 12, 3: 12, 4:11, 5:11, 6:12, 7:12},
'Class': {0: 'Bike', 1: 'Car', 2: 'Bike', 3: 'Car', 4: 'Bike', 5: 'Car', 6: 'Bike', 7: 'Car',},
'Data': {0: 20, 1: 200, 2: 30, 3: 300, 4:40, 5:400, 6:50, 7:500}})

另一种选择是使用Dataframe.pivot方法,如

pvt = df.pivot(index=['Site','Month'], columns="Class", values="Data")
print(pvt)
Class       Bike  Car
Site Month           
A    11       20  200
12       30  300
B    11       40  400
12       50  500

其中columns参数(Class(的参数值被明显地转换为新列名。

PS。可以将df.pivot替换为df.pivot_table,如果需要在另一时间使用。

最新更新