回答編集履歴
4
Update
answer
CHANGED
@@ -38,27 +38,27 @@
|
|
38
38
|
以下、かなり冗長ですが書き換えの一例として参考にして下さい(動作保証はありません)。
|
39
39
|
```python
|
40
40
|
df_list = []
|
41
|
-
for
|
41
|
+
for s in soup_html:
|
42
42
|
rank_list = []
|
43
43
|
height_list = []
|
44
44
|
weight = []
|
45
45
|
df = pd.DataFrame()
|
46
46
|
|
47
|
-
content =
|
47
|
+
content = s.find_all(class_='Num')
|
48
48
|
for i in content:
|
49
49
|
rank = i.text
|
50
50
|
rank = rank.replace('\n', '')
|
51
51
|
rank_list.append(rank)
|
52
52
|
df['成績'] = rank_list
|
53
53
|
|
54
|
-
content =
|
54
|
+
content = s.find_all(class_='height')
|
55
55
|
for i in content:
|
56
56
|
height = i.text
|
57
57
|
height = height.replace('\n', '')
|
58
58
|
height_list.append(height)
|
59
59
|
df['身長'] = height_list
|
60
60
|
|
61
|
-
content =
|
61
|
+
content = s.find_all(class_='weight')
|
62
62
|
for i in content:
|
63
63
|
weight = i.text
|
64
64
|
weight = weight.replace('\n', '')
|
3
Update
answer
CHANGED
@@ -33,22 +33,41 @@
|
|
33
33
|
|
34
34
|
**追記**
|
35
35
|
|
36
|
-
>
|
36
|
+
> 以下が現在のコードでどのように変更すれば、実現できるのか
|
37
37
|
|
38
|
-
以下
|
38
|
+
以下、かなり冗長ですが書き換えの一例として参考にして下さい(動作保証はありません)。
|
39
39
|
```python
|
40
40
|
df_list = []
|
41
|
-
for i in soup: # soupを取得(ここが1000個近くある部分)
|
42
|
-
|
41
|
+
for i in soup_html:
|
42
|
+
rank_list = []
|
43
|
+
height_list = []
|
43
|
-
|
44
|
+
weight = []
|
45
|
+
df = pd.DataFrame()
|
44
46
|
|
47
|
+
content = i.find_all(class_='Num')
|
48
|
+
for i in content:
|
49
|
+
rank = i.text
|
50
|
+
rank = rank.replace('\n', '')
|
45
|
-
|
51
|
+
rank_list.append(rank)
|
46
52
|
df['成績'] = rank_list
|
47
|
-
:
|
48
53
|
|
54
|
+
content = i.find_all(class_='height')
|
55
|
+
for i in content:
|
56
|
+
height = i.text
|
57
|
+
height = height.replace('\n', '')
|
58
|
+
height_list.append(height)
|
59
|
+
df['身長'] = height_list
|
60
|
+
|
61
|
+
content = i.find_all(class_='weight')
|
62
|
+
for i in content:
|
63
|
+
weight = i.text
|
64
|
+
weight = weight.replace('\n', '')
|
65
|
+
weight_list.append(weight)
|
66
|
+
df['体重'] = weight_list
|
67
|
+
|
49
68
|
# for i in soup のループが1回完了する毎にリストに追加します
|
50
|
-
df_list.append(df)
|
69
|
+
df_list.append(df.sort_values('成績'))
|
51
70
|
|
52
71
|
# 全て取得したら縦に連結
|
53
|
-
df_all = pd.concat(
|
72
|
+
df_all = pd.concat(df_list)
|
54
73
|
```
|
2
Update
answer
CHANGED
@@ -29,4 +29,26 @@
|
|
29
29
|
A 162 46 1 3
|
30
30
|
C 170 60 2 1
|
31
31
|
B 168 58 3 2
|
32
|
+
```
|
33
|
+
|
34
|
+
**追記**
|
35
|
+
|
36
|
+
> 上記のような手法でDFを作成しています。
|
37
|
+
|
38
|
+
以下の様な流れになるかと思います。
|
39
|
+
```python
|
40
|
+
df_list = []
|
41
|
+
for i in soup: # soupを取得(ここが1000個近くある部分)
|
42
|
+
for i in content: # 成績、身長、体重を取得
|
43
|
+
:
|
44
|
+
|
45
|
+
df = pd.DataFrame()
|
46
|
+
df['成績'] = rank_list
|
47
|
+
:
|
48
|
+
|
49
|
+
# for i in soup のループが1回完了する毎にリストに追加します
|
50
|
+
df_list.append(df)
|
51
|
+
|
52
|
+
# 全て取得したら縦に連結
|
53
|
+
df_all = pd.concat(i.sort_values('成績') for i in df_list)
|
32
54
|
```
|
1
Update
answer
CHANGED
@@ -18,10 +18,9 @@
|
|
18
18
|
'過去成績': [ 3, 2, 1],
|
19
19
|
}, index = ['A', 'B', 'C'])
|
20
20
|
|
21
|
-
df3 = pd.concat(
|
21
|
+
df3 = pd.concat(i.sort_values('成績') for i in (df1, df2))
|
22
22
|
|
23
23
|
print(df3)
|
24
|
-
|
25
24
|
#
|
26
25
|
身長 体重 成績 過去成績
|
27
26
|
C 150 50 1 1
|