回答編集履歴

1

回答に追記

2019/06/03 06:39

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -59,3 +59,47 @@
59
59
  #2 0 1 0 1
60
60
 
61
61
  ```
62
+
63
+ ### 【追記】
64
+
65
+ 各行の間ではなく列の間ということで、修正しました。
66
+
67
+ Column名は同じ名前があると扱いが面倒なので、``add_suffix()``にてサフィックスを追加して、
68
+
69
+ ソートした際に意図した通りに並ぶようにしてあります。
70
+
71
+
72
+
73
+ ```Python
74
+
75
+ import pandas as pd
76
+
77
+
78
+
79
+ df = pd.DataFrame([[1,0,0,0],[1,1,0,0],[1,0,1,0]], columns=['n0','n1','n2','n3'])
80
+
81
+ print(df)
82
+
83
+ # n0 n1 n2 n3
84
+
85
+ #0 1 0 0 0
86
+
87
+ #1 1 1 0 0
88
+
89
+ #2 1 0 1 0
90
+
91
+
92
+
93
+ ret = pd.concat(((~df.astype('bool')).astype('int').add_suffix('_0'), df.add_suffix('_1')), axis=1)
94
+
95
+ ret = ret.reindex(ret.columns.sort_values(), axis=1)
96
+
97
+ # n0_0 n0_1 n1_0 n1_1 n2_0 n2_1 n3_0 n3_1
98
+
99
+ #0 0 1 1 0 1 0 1 0
100
+
101
+ #1 0 1 0 1 1 0 1 0
102
+
103
+ #2 0 1 1 0 0 1 1 0
104
+
105
+ ```