熊猫分组移动并同时计数

时间:2018-11-27 23:45:16

标签: python pandas

基本上,我正在尝试对['dealer','State','city']的组合进行上一行。如果此组合中有多个值,我将获得此组合的Shifted值。

df['ShiftBY_D_S_C']= df.groupby(['dealer','State','city'])['dealer'].shift(1)

我将再次使用ShiftBY_D_S_C列,并尝试计算['ShiftBY_D_S_C','州','城市']组合的计数。

df['NewColumn'] = (df.groupby(['ShiftBY_D_S_C','State','city'])['ShiftBY_D_S_C'].transform("count"))+1

下表显示了我正在尝试做的事情,并且效果很好。但是,当ShiftBY_D_S_C列中的所有行均为空时,这将不起作用,因为它具有所有空值。有什么建议吗?

enter image description here

当ShiftBY_D_S_C中的所有值均为NaN时,我试图查看如下所示的NewColumn值。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以简单地使用if / else情况处理您描述的特殊情况:

if df['ShiftBY_D_S_C'].isna().all():
    df['NewColumn'] = 1
else:
    df['NewColumn'] = df.groupby(...)