Добавлена логика обмена в ваш окончательный набор данных,
data = {'P&G': [{'name': ['Big'], 'data': [0, 0, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 0, 0, 0, 1]},
{'name': ['Monitoring'], 'data': [0, 0, 1, 0, 1]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 0]}],
'ABCD': [{'name': ['Big'], 'data': [0, 1, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 0, 1, 0, 0]},
{'name': ['Monitoring'], 'data': [0, 3, 1, 0, 1]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 0]}],
'WORLD': [{'name': ['Big'], 'data': [0, 0, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 1, 0, 0, 0]},
{'name': ['Monitoring'], 'data': [0, 0, 0, 2, 0]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 1]}],
'Migration': [{'name': ['Big'], 'data': [1, 0, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 0, 0, 0, 0]},
{'name': ['Monitoring'], 'data': [2, 0, 0, 0, 0]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 0]}],
'Channel': [{'name': ['Big'], 'data': [0, 2, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 1, 0, 0, 0]},
{'name': ['Monitoring'], 'data': [0, 1, 0, 0, 0]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 0]}],
'AVR': [{'name': ['Big'], 'data': [0, 0, 0, 0, 0]},
{'name': ['Small'], 'data': [0, 0, 0, 0, 0]},
{'name': ['Monitoring'], 'data': [0, 1, 0, 0, 0]},
{'name': ['Improvement'], 'data': [0, 0, 0, 0, 0]}]}
x_axis = {'P&G': {'categories': ['April', 'January', 'June', 'March', 'May']},
'ABCD': {'categories': ['April', 'January', 'June', 'March', 'May']},
'WORLD': {'categories': ['April', 'January', 'June', 'March', 'May']},
'Migration': {'categories': ['April', 'January', 'June', 'March', 'May']},
'Channel': {'categories': ['April', 'January', 'June', 'March', 'May']},
'AVR': {'categories': ['April', 'January', 'June', 'March', 'May']}}
target_month_order = ['January', 'March', 'April', 'May', 'June']
final_data = dict()
for name in x_axis.keys():
# Modifying data1
final_data[name] = dict()
final_data[name]['categories'] = target_month_order
# Modifying data2
final_data[name]['series'] = list()
print('Swapping - ', name)
actual_month_order = x_axis[name]['categories']
swap_index = [actual_month_order.index(month) for month in target_month_order]
_tmp = data[name]
for _val in _tmp:
_new_list = []
for swap_idx in swap_index:
_new_list.append(_val['data'][swap_idx])
# print(list(zip(actual_month_order, _val['data'])))
# print(list(zip(target_month_order, _new_list)))
final_data[name]['series'].append({'name': _val['name'], 'data': _new_list})
print('--')
# print(swap_index)
# print(final_data[name]['series'])
print(' *-*' * 20)
import pprint
pprint.pprint(final_data)
выход
*-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-* *-*
{'ABCD': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [1, 0, 0, 0, 0], 'name': ['Big']},
{'data': [0, 0, 0, 0, 1], 'name': ['Small']},
{'data': [3, 0, 0, 1, 1], 'name': ['Monitoring']},
{'data': [0, 0, 0, 0, 0], 'name': ['Improvement']}]},
'AVR': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [0, 0, 0, 0, 0], 'name': ['Big']},
{'data': [0, 0, 0, 0, 0], 'name': ['Small']},
{'data': [1, 0, 0, 0, 0], 'name': ['Monitoring']},
{'data': [0, 0, 0, 0, 0], 'name': ['Improvement']}]},
'Channel': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [2, 0, 0, 0, 0], 'name': ['Big']},
{'data': [1, 0, 0, 0, 0], 'name': ['Small']},
{'data': [1, 0, 0, 0, 0], 'name': ['Monitoring']},
{'data': [0, 0, 0, 0, 0], 'name': ['Improvement']}]},
'Migration': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [0, 0, 1, 0, 0], 'name': ['Big']},
{'data': [0, 0, 0, 0, 0], 'name': ['Small']},
{'data': [0, 0, 2, 0, 0], 'name': ['Monitoring']},
{'data': [0, 0, 0, 0, 0], 'name': ['Improvement']}]},
'P&G': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [0, 0, 0, 0, 0], 'name': ['Big']},
{'data': [0, 0, 0, 1, 0], 'name': ['Small']},
{'data': [0, 0, 0, 1, 1], 'name': ['Monitoring']},
{'data': [0, 0, 0, 0, 0], 'name': ['Improvement']}]},
'WORLD': {'categories': ['January', 'March', 'April', 'May', 'June'],
'series': [{'data': [0, 0, 0, 0, 0], 'name': ['Big']},
{'data': [1, 0, 0, 0, 0], 'name': ['Small']},
{'data': [0, 2, 0, 0, 0], 'name': ['Monitoring']},
{'data': [0, 0, 0, 1, 0], 'name': ['Improvement']}]}}