データフレーム:特定の複数の文字で列を分割したい
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つの文字(;、:)で分割したいとき、最初は;で、次に:で…というように分割できますでしょうか?最後に、理想の形は分割された文字列の先頭と末尾に空白が入らないようにしたいのですが何か方法があれば教えていただきたいです。よろしくお願い致します。