Панды Подать заявку с условием

Java использует управляемую память, поэтому единственным способом выделения памяти является использование оператора new, и единственный способ освободить память - это использовать сборщик мусора.

Это . (PDF) может помочь объяснить, что происходит.

Вы также можете вызвать System.gc(), чтобы предположить, что сборщик мусора запускается немедленно. Тем не менее, Java Runtime принимает окончательное решение, а не ваш код.

Согласно документации Java ,

Вызов метода gc предполагает, что виртуальная машина Java тратит усилия на переработку неиспользуемых объектов, чтобы сделать память, которую они в настоящее время занимают, для быстрого повторного использования. Когда управление возвращается из вызова метода, виртуальная машина Java прилагает все усилия, чтобы освободить место от всех отброшенных объектов.

blockquote>

2
задан marc_s 19 March 2019 в 21:25
поделиться

2 ответа

Из того, что я понимаю, вы можете попытаться сделать:

df['new_status']=(df.groupby('Customer')['Status'].
  transform(lambda x: x.eq('canceled').all()).map({True:'cancelled'})).fillna(df.new_status)
print(df)

    Customer    Status new_status  duplicated
0   X         canceled             0         
1   X         canceled             1         
2   X         active               2         
3   Y         canceled  cancelled  0         
4   A         canceled  cancelled  0         
5   A         canceled  cancelled  1         
6   B         active               0         
7   B         canceled             1   

РЕДАКТИРОВАТЬ, так как ожидаемое o / p было изменено:

df['new_status']=(df.groupby('Customer')['Status'].
             transform(lambda x: x.duplicated(keep=False)&(x.eq('canceled').all()))
                         .map({True:'cancelled',False:''}))
print(df)

  Customer    Status new_status  duplicated
0   X         canceled             0         
1   X         canceled             1         
2   X         active               2         
3   Y         canceled             0         
4   A         canceled  cancelled  0         
5   A         canceled  cancelled  1         
6   B         active               0         
7   B         canceled             1   
0
ответ дан anky_91 19 March 2019 в 21:25
поделиться

Сравните столбец по Series.eq для == и используйте GroupBy.transform с GroupBy.all для проверки, все ли значения равны True с по группам, затем сравните Customer по Series.duplicated с keep=False для возврата всех дупликов. Последняя цепочка вместе поразрядно AND (&) и установить значения по numpy.where :

m1 = df['Status'].eq('canceled').groupby(df['Customer']).transform('all')
m2 = df['Customer'].duplicated(keep=False)

df['new_status'] = np.where(m1 & m2, 'cancelled', '')
print (df)
  Customer    Status new_status  duplicated
0        X  canceled                      0
1        X  canceled                      1
2        X    active                      2
3        Y  canceled                      0
4        A  canceled  cancelled           0
5        A  canceled  cancelled           1
6        B    active                      0
7        B  canceled                      1
0
ответ дан jezrael 19 March 2019 в 21:25
поделиться
Другие вопросы по тегам:

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