python / pandas - 计算单个DataFrame列中的唯一值并将计数显示为新列

时间:2016-08-17 09:14:46

标签: python pandas group-by

我从城市过境数据开始,附加一列包含交通方式

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()

1 个答案:

答案 0 :(得分:2)

您可以使用nuniqueunstack。上次reset_indexrename_axispandas 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