У меня есть DataFrame потоков , представляющих людей, пересекающих границы
flows = DataFrame([[1,2],[3,4]], index=['Monday', 'Tuesday'], columns=['CZ>DE', 'HU>AT'])
CZ>DE HU>AT
Monday 1 2
Tuesday 3 4
Я хотел бы разбить каждый столбец на два столбца, представляющих увеличение / уменьшение страны на границу. Мой текущий код и желаемый результат - это
country_from = lambda x: x[:2]
country_to = lambda x: x[3:]
flows_from = -1*flows.copy()
flows_from.columns = pd.MultiIndex.from_tuples([(border, country_from(border)) for border in flows.columns])
flows_to = flows.copy()
flows_to.columns = pd.MultiIndex.from_tuples([(border, country_to(border)) for border in flows.columns])
country_flows = pd.concat([flows_from, flows_to], axis=1)
country_flows = country_flows.groupby(level=[0,1], axis=1).sum()
CZ>DE HU>AT
CZ DE AT HU
Monday -1 1 2 -2
Tuesday -3 3 4 -4
Это решение довольно многословно, и я подозреваю, что это можно сделать лучше. Будет ли у кого-нибудь идея?