我正在尝试卸载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
,如果需要在另一时间使用。