回答編集履歴

3

抽出例を追記

2025/04/19 09:37

投稿

melian
melian

スコア21181

test CHANGED
@@ -25,3 +25,19 @@
25
25
  # 8 佐藤 詩織 科学 20
26
26
  ```
27
27
 
28
+ ### 追記
29
+
30
+ > 上記機能を実装したら、英語が90点以上だった場合の処理などを追加したい
31
+
32
+ [pandas.DataFrame.query — pandas 2.2.3 documentation](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.query.html) を利用して、変形後のデータフレーム(`exploded_df`)から条件に適合するレコードを抽出します。
33
+
34
+ ```python
35
+ exploded_df.columns = ['名前', '科目', '点数']
36
+ result = exploded_df.query('科目=="英語" and 点数 >= 90')
37
+ print(result)
38
+
39
+ # 名前 科目 点数
40
+ # 0 青山 太郎 英語 90
41
+ ```
42
+
43
+

2

2025/04/19 04:51

投稿

melian
melian

スコア21181

test CHANGED
@@ -9,7 +9,7 @@
9
9
  exploded_df = pd.json_normalize(data, 'GradePoint', ['Name']).reset_index()\
10
10
  .rename(columns={'English': '英語', 'Math': '数学', 'Science': '科学'})\
11
11
  .melt(id_vars=['index', 'Name']).sort_values('index', kind='stable')\
12
- .drop(columns='index').reset_index(drop=True)
12
+ .drop(columns='index').reset_index(drop=True).astype({'value': int})
13
13
 
14
14
  print(exploded_df)
15
15
 

1

2025/04/19 03:04

投稿

melian
melian

スコア21181

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  exploded_df = pd.json_normalize(data, 'GradePoint', ['Name']).reset_index()\
10
10
  .rename(columns={'English': '英語', 'Math': '数学', 'Science': '科学'})\
11
- .melt(id_vars=['index', 'Name']).sort_values('index')\
11
+ .melt(id_vars=['index', 'Name']).sort_values('index', kind='stable')\
12
12
  .drop(columns='index').reset_index(drop=True)
13
13
 
14
14
  print(exploded_df)
@@ -18,8 +18,8 @@
18
18
  # 1 青山 太郎 数学 60
19
19
  # 2 青山 太郎 科学 10
20
20
  # 3 黒田 一 英語 10
21
+ # 4 黒田 一 数学 30
21
- # 4 黒田 一 科学 40
22
+ # 5 黒田 一 科学 40
22
- # 5 黒田 一 数学 30
23
23
  # 6 佐藤 詩織 英語 50
24
24
  # 7 佐藤 詩織 数学 60
25
25
  # 8 佐藤 詩織 科学 20