Ian,
When you say measurement group I presume you mean unit - part_per_million_per_cubic_meter is a unit whereas what you call a 'measurement group' sounds to me to be more like a unit group, eg group_temperature or group_pressure which are groups that contain details of all of the units used for temperature and pressure respectively. Not trying to be pedantic, but it's important to know what part of the WeeWX unit system we are dealing with - there are lots of moving parts. I'll assume your question is about adding a new unit.
Same basic process but instead of manipulating weewx.units.obs_group_dict you might need to manipulate weewx.units.USUnits, weewx.units.MetricUnits and weewx.units.MetricWXUnits unit systems if your new unit will be the default unit used for one or more of the three unit systems. If it is not to be a default but rather another unit in an existing unit group then you would need to add it to the weewx.units.conversionDict so that WeeWX knows how to convert to and from your new unit in it's unit group. If your new unit is not a default unit in a unit system or is not a unit to be converted to/from then you essentially won't be using your new unit. You may also need to define default unit formatting and unit labels for your new unit in units.default_unit_format_dict and units.default_unit_label_dict respectively.
Ignoring the existing WeeWX group_concentration, let's say you want a new unit group, 'group_new_concentration' and it will be the only unit in that unit group (ie no unit conversions required). Default unit formatting will be 1 decimal place and the default unit label will be 'ppm/m3'. So putting that altogether you might end up with something like:
import weewx.units
# set the unit system units
weewx.units.USUnits['group_new_concentration'] = 'part_per_million_per_cubic_meter'
weewx.units.MetricUnits['group_new_concentration'] = 'part_per_million_per_cubic_meter'
weewx.units.MetricWXUnits['group_new_concentration'] = 'part_per_million_per_cubic_meter'
# define default formatting
weewx.units.default_unit_format_dict['part_per_million_per_cubic_meter'] = '%.1f'
# define default unit label
weewx.units.default_unit_label_dict['part_per_million_per_cubic_meter'] = ' ppm/m3'
Let's say you want to add part_per_million_per_cubic_meter to the existing group_concentration unit group. part_per_million_per_cubic_meter will not be the default group_concentration unit in any of the unit systems. Same default formatting and unit label. For the sake of argument lets say to convert from microgram_per_meter_cubed to part_per_million_per_cubic_meter you divide by 10, ie 10 microgram_per_meter_cubed = 1 part_per_million_per_cubic_meter (this is a nonsense of course, it is just to illustrate a point). In this case you might use:
import weewx.units
# define conversion functions for group_concentration
weewx.units.conversionDict['microgram_per_meter_cubed'] = {'part_per_million_per_cubic_meter': lambda x: x / 10.0}
weewx.units.conversionDict['part_per_million_per_cubic_meter'] = {'microgram_per_meter_cubed': lambda x: x * 10.0}
# define default formatting
weewx.units.default_unit_format_dict['part_per_million_per_cubic_meter'] = '%.1f'
# define default unit label
weewx.units.default_unit_label_dict['part_per_million_per_cubic_meter'] = ' ppm/m3'
If you wanted to set part_per_million_per_meter_cubed as the the default US customary unit then you would add in the following line:
weewx.units.USUnits['group_concentration'] = 'part_per_million_per_cubic_meter'
Finally, where to put the code. Of course you could put it in extensions.py as per my previous post. If you were using this as part of a driver or service you have written (and that is the only place it will be used, ie someone who does not have your driver will unlikely use these settings) then you can put it in your driver or service file with zero indent, that way the code will be read and executed when your driver or service is loaded. My preference is the latter if it is applicable.
Gary