我从城市过境数据开始,附加一列包含交通方式
Orig Dest Type
NY SF Train
NY SF Plane
NO NY Plane
SE NO Plane
SE NO Train
我想聚合它,以便Type中的每个唯一值变为一个列,每个唯一的Orig / Dest对具有该Type的计数
Orig Dest Plane Train
NY SF 1 1
NO NY 1 0
SE NO 1 1
我知道使用pd.groupby进行一些基本聚合,但只能使用以下方法聚合以获得原始/目标对的基本计数:
df.groubpy(['Orig','Dest'])['Type'].count()
答案 0 :(得分:2)
您可以使用nunique
和unstack
。上次reset_index
和rename_axis
(pandas
0.18.0
中的新内容):
print (df.groupby(['Orig','Dest', 'Type'])['Type']
.nunique()
.unstack()
.fillna(0)
.astype(int)
.reset_index()
.rename_axis(None, axis=1))
Orig Dest Plane Train
0 NO NY 1 0
1 NY SF 1 1
2 SE NO 1 1