回答編集履歴

2

更に補足を追加

2018/04/11 05:14

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -49,3 +49,73 @@
49
49
  print(df)
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ ---
56
+
57
+
58
+
59
+ **【更に補足】**
60
+
61
+ とりあえず質問の処理をループを使わずに書いてみました。
62
+
63
+ 現在、どのような処理を行っているのか不明ですが、ループを行うよりは高速に処理できるはずです。
64
+
65
+
66
+
67
+ ```Python
68
+
69
+ import pandas as pd
70
+
71
+
72
+
73
+ df = pd.DataFrame([['A0','B0','C0','D0'],
74
+
75
+ [np.nan,'B1',np.nan,'D1'],
76
+
77
+ ['A2','B2','C2','D2'],
78
+
79
+ [np.nan,'B3',np.nan,'D3'],
80
+
81
+ ['A4','B4','C4','D4'],
82
+
83
+ [np.nan,'B5',np.nan,'D5']])
84
+
85
+
86
+
87
+ print(df)
88
+
89
+ # 0 1 2 3
90
+
91
+ #0 A0 B0 C0 D0
92
+
93
+ #1 NaN B1 NaN D1
94
+
95
+ #2 A2 B2 C2 D2
96
+
97
+ #3 NaN B3 NaN D3
98
+
99
+ #4 A4 B4 C4 D4
100
+
101
+ #5 NaN B5 NaN D5
102
+
103
+
104
+
105
+ df[4] = df[3].shift(-1)
106
+
107
+ df[1] = df[1].str.cat(df[1].shift(-1), sep=' ')
108
+
109
+
110
+
111
+ print(df[0::2])
112
+
113
+ # 0 1 2 3 4
114
+
115
+ #0 A0 B0 B1 C0 D0 D1
116
+
117
+ #2 A2 B2 B3 C2 D2 D3
118
+
119
+ #4 A4 B4 B5 C4 D4 D5
120
+
121
+ ```

1

回等に補足を追加

2018/04/11 05:14

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -21,3 +21,31 @@
21
21
  で十分な気がするのですが、(これでかなり速くなります)
22
22
 
23
23
  なにかループを使わなければならない理由があるのでしょうか?
24
+
25
+
26
+
27
+ ---
28
+
29
+ **【補足】**
30
+
31
+ Loopを使う場合を記述
32
+
33
+
34
+
35
+ ```Python
36
+
37
+ import pandas as pd
38
+
39
+ f = pd.DataFrame([[1,2,3],[4,5,6]])
40
+
41
+ rows = []
42
+
43
+ for idx, row in f.iterrows():
44
+
45
+ rows.append(row[[1,2]])
46
+
47
+ df = pd.concat(rows, axis=1).T.rename(columns={1:'A', 2:'B'})
48
+
49
+ print(df)
50
+
51
+ ```