df1 = pd.DataFrame([[" A: a; aa; aaa; aaaa;aaaaa: Aa"],
   [" B: b;bb; bbb; bbbb;bbbbb:Bb"],
   ["C: c; cc; ccc;cccc; ccccc: Cc"],
   ["D: d; dd; ddd; dddd;ddddd:Dd"]])

このデータフレームを出力してみると、

                            0
0   A: a; aa; aaa; aaaa;aaaaa: Aa
1   B: b;bb; bbb; bbbb;bbbbb:Bb
2   C: c; cc; ccc;cccc; ccccc: Cc
3   D: d; dd; ddd; dddd;ddddd:Dd

となります。ご覧の通り:が最初と最後に2回、;がその間に4回入っており、その前後にところどころ空白があります。
これを;と:で以下になるように7列に分割しようと思っています。

                0   1   2    3   4     5     6
            0   A   a   aa  aaa aaaa aaaaa  Aa
            1   B   b   bb  bbb bbbb bbbbb  Bb
            2   C   c   cc  ccc cccc ccccc  Cc
            3   D   d   dd  ddd dddd ddddd  Dd

まず;で分割しようと

df2 = df1.iloc[:, [1]].str.split(';', expand=True)

としてみたのですが

IndexError: positional indexers are out-of-bounds

とでてきました。
以前、カラム名がもとからあってそこからカラム名を指定してstr.split(';', expand= True)をおこなった場合は分割できたのですが…今回のようにカラム名を指定していないとできないのでしょうか?また、このように2つの文字(;、:)で分割したいとき、最初は;で、次に:で…というように分割できますでしょうか?最後に、理想の形は分割された文字列の先頭と末尾に空白が入らないようにしたいのですが何か方法があれば教えていただきたいです。よろしくお願い致します。