diff --git a/etrago/cluster/disaggregation.py b/etrago/cluster/disaggregation.py
index <HASH>..<HASH> 100644
--- a/etrago/cluster/disaggregation.py
+++ b/etrago/cluster/disaggregation.py
@@ -488,20 +488,7 @@ class UniformDisaggregation(Disaggregation):
                     ws = weight.sum(axis=len(loc))
                     for bus_id in filtered.index:
                         values = clt * weight.loc[loc + (bus_id,)] / ws
-                        # Ok. The stuff below looks complicated, but there's a
-                        # reason for it and it is weird.
-                        # Use git blame and see the accompanying commit message
-                        # for an explanation.
-                        for size in count(3):
-                            column = ''.join(
-                                    random.choice(string.ascii_uppercase)
-                                    for _ in range(size))
-                            if column not in pn_t[s].columns:
-                                break
-                        pn_t[s].loc[:, column] = values
-                        pn_t[s].rename(
-                                columns={column: bus_id},
-                                inplace=True)
+                        pn_t[s].insert(len(pn_t[s].columns), bus_id, values)
 
 
     def transfer_results(self, *args, **kwargs):
Replace overly complicated solution with `insert`

Thankfully `DataFrame.insert` doesn't suffer from the same deficiency as
`DataFrame.loc[:, column] =` which makes it a suitable replacement for
the ad hoc workaround.