У меня есть серия сгруппированных по районам -> типам преступлений -> количество преступлений:
PdDistrict Category
BAYVIEW ASSAULT 8976
BURGLARY 2891
DISORDERLY CONDUCT 207
DRIVING UNDER THE INFLUENCE 188
DRUG/NARCOTIC 2061
...
TENDERLOIN STOLEN PROPERTY 299
TRESPASS 665
VANDALISM 1710
VEHICLE THEFT 661
WEAPON LAWS 791
Name: IncidntNum, Length: 140, dtype: int64
Моя цель - разделить каждое значение со скаляром.
Я попытался сделать это, используя al oop, перебрав «PdDistricts» и запустив следующую строку:
series[district] = series[district] / sum(series[district])
Если я запускаю только series[district] / sum(series[district])
, вывод будет таким, как предполагалось:
Category
ASSAULT 0.11434063
BURGLARY 0.09323762
DISORDERLY CONDUCT 0.00427552
DRIVING UNDER THE INFLUENCE 0.00478544
DRUG/NARCOTIC 0.05691535
DRUNKENNESS 0.00596219
LARCENY/THEFT 0.46712952
PROSTITUTION 0.00027457
ROBBERY 0.02753589
STOLEN PROPERTY 0.00917863
TRESPASS 0.01247352
VANDALISM 0.09335530
VEHICLE THEFT 0.09884679
WEAPON LAWS 0.01168902
Name: IncidntNum, dtype: float64
Но когда я пытаюсь обновить существующую часть серии, работающей series[district] = series[district] / sum(series[district])
, я получаю:
Category
ASSAULT 0
BURGLARY 0
DISORDERLY CONDUCT 0
DRIVING UNDER THE INFLUENCE 0
DRUG/NARCOTIC 0
DRUNKENNESS 0
LARCENY/THEFT 0
PROSTITUTION 0
ROBBERY 0
STOLEN PROPERTY 0
TRESPASS 0
VANDALISM 0
VEHICLE THEFT 0
WEAPON LAWS 0
Name: IncidntNum, dtype: int64
Что не так, как предполагалось. Если я использую .lo c, я просто получаю NaN вместо 0.
Я просто не могу понять, что происходит, все решения, которые я попробовал, потерпели неудачу, и я думаю, что ключевая проблема заключается в том, что я не до конца понимаю, как работать с Series в Pandas.
Надеюсь, вы поможете мне понять проблему.
/ Миккель