Панды получают совокупную сумму после группового

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
2
задан aaz 13 April 2019 в 13:45
поделиться

2 ответа

IIUC, вам нужно:

df['visit']=df.groupby('id')['date'].transform(lambda x: pd.factorize(x)[0])
print(df)
<час>
    id   date purchase  visit
0  id1  date1      $10      0
1  id1  date1      $50      0
2  id1  date2      $30      1
3  id2  date1      $10      0
4  id2  date2      $10      1
5  id2  date3      $10      2
0
ответ дан anky_91 13 April 2019 в 13:45
поделиться

Еще один подход с категорией:

df['visit'] = df.groupby('id')['date'].transform(lambda x: pd.Categorical(x).codes)
0
ответ дан Steven G 13 April 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: