Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Используйте GroupBy.transform
для возврата Series
с тем же размером, что и оригинал df
:
grouped_b = df.groupby('B')
def norm(value):
return value/value.max()
df['C'] = grouped_b['C'].transform(norm)
print (df)
A B C
0 foo one 0.25
1 bar one 0.50
2 foo two 0.20
3 bar three 0.40
4 foo two 0.60
5 bar two 1.00
6 foo one 0.50
7 foo three 1.00
8 bar one 1.00
Вы также можете использовать функцию lambda
:
Использование transform
df.C/=df.groupby(['B']).C.transform('max')