teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

更に補足を追加

2018/04/11 05:14

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -23,4 +23,39 @@
23
23
  rows.append(row[[1,2]])
24
24
  df = pd.concat(rows, axis=1).T.rename(columns={1:'A', 2:'B'})
25
25
  print(df)
26
+ ```
27
+
28
+ ---
29
+
30
+ **【更に補足】**
31
+ とりあえず質問の処理をループを使わずに書いてみました。
32
+ 現在、どのような処理を行っているのか不明ですが、ループを行うよりは高速に処理できるはずです。
33
+
34
+ ```Python
35
+ import pandas as pd
36
+
37
+ df = pd.DataFrame([['A0','B0','C0','D0'],
38
+ [np.nan,'B1',np.nan,'D1'],
39
+ ['A2','B2','C2','D2'],
40
+ [np.nan,'B3',np.nan,'D3'],
41
+ ['A4','B4','C4','D4'],
42
+ [np.nan,'B5',np.nan,'D5']])
43
+
44
+ print(df)
45
+ # 0 1 2 3
46
+ #0 A0 B0 C0 D0
47
+ #1 NaN B1 NaN D1
48
+ #2 A2 B2 C2 D2
49
+ #3 NaN B3 NaN D3
50
+ #4 A4 B4 C4 D4
51
+ #5 NaN B5 NaN D5
52
+
53
+ df[4] = df[3].shift(-1)
54
+ df[1] = df[1].str.cat(df[1].shift(-1), sep=' ')
55
+
56
+ print(df[0::2])
57
+ # 0 1 2 3 4
58
+ #0 A0 B0 B1 C0 D0 D1
59
+ #2 A2 B2 B3 C2 D2 D3
60
+ #4 A4 B4 B5 C4 D4 D5
26
61
  ```

1

回等に補足を追加

2018/04/11 05:14

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -9,4 +9,18 @@
9
9
  ```
10
10
 
11
11
  で十分な気がするのですが、(これでかなり速くなります)
12
- なにかループを使わなければならない理由があるのでしょうか?
12
+ なにかループを使わなければならない理由があるのでしょうか?
13
+
14
+ ---
15
+ **【補足】**
16
+ Loopを使う場合を記述
17
+
18
+ ```Python
19
+ import pandas as pd
20
+ f = pd.DataFrame([[1,2,3],[4,5,6]])
21
+ rows = []
22
+ for idx, row in f.iterrows():
23
+ rows.append(row[[1,2]])
24
+ df = pd.concat(rows, axis=1).T.rename(columns={1:'A', 2:'B'})
25
+ print(df)
26
+ ```