質問編集履歴

3

補足

2022/12/31 15:34

投稿

Jonathan_Sf
Jonathan_Sf

スコア13

test CHANGED
File without changes
test CHANGED
@@ -23,7 +23,7 @@
23
23
  - 列2の値が同じ行がテーブルにない場合、欠損値はnullのままにします。
24
24
 
25
25
  ### 試したこと
26
- - pandas-gbqを使って上記の方針でpythonスクリプトを作り、要件を満たす実装を作りました。(列3がnullの行をSELECTしてdfに格納し、一行ずつ上記の処理を行というものです。)
26
+ - pandas-gbqを使って上記の方針でpythonスクリプトを作り、要件を満たす実装を作りました。(列3がnullの行をSELECTしてdfに格納し、一行ずつ上記の処理を行ってからUPDATEするというものです。)
27
27
  - 個人的には結構よくある欠損地埋めのパターンと思っているのですが、検索しても同様の問題の解決策などを見つけることができませんでした。
28
28
  - ↑の例はシンプルなパターンですが、列2の値が同じ行がテーブルにない場合は他の列で順々に同じ処理をしていく実装や、一つの列だけでなく、複数の列が同じ行を検索する場合の実装などのパターンもあり、誰かライブラリ作ってくれと思っていたところでした。
29
29
  - このような場合のベストプラクティスなどがあれば教えていただきたいと思い、質問させていただきます。(BigQueryに限らず、csv、dataframe一般についての方法でも大丈夫です)

2

例を追加

2022/12/31 15:31

投稿

Jonathan_Sf
Jonathan_Sf

スコア13

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,8 @@
5
5
  |1|日本ハム|ガッツ|小笠原道大|1997
6
6
  |2|北海道日本ハム|ガッツ|小笠原道大|2004
7
7
  |3|巨人|ガッツ|null|2007
8
+ |4|東北楽天|神の子|田中将大|2007
9
+ |5|東北楽天|神の子|null|2020
8
10
 
9
11
  ### 実現したいこと
10
12
  - これをクレンジング処理によって、このように埋めたいです。
@@ -13,7 +15,8 @@
13
15
  |1|日ハム|ガッツ|小笠原道大|1997
14
16
  |2|北海道日本ハム|ガッツ|小笠原道大|2004
15
17
  |3|巨人|ガッツ|小笠原道大|2007
16
-
18
+ |4|東北楽天|神の子|田中将大|2007
19
+ |5|東北楽天|神の子|田中将大|2020
17
20
  - 欠損値はいずれも列3のみに生じており、いずれの行も列2と列3の値は一対一に対応しています。
18
21
  - 従って欠損値を埋めるには、欠損行と列2の値が同じかつ、列3がnullでない行をテーブルから検索して、列3の値を取得すればokです。
19
22
  - そのような行が複数ある場合は、列4の値が新しい方の行を採用することとします。

1

タグ違い

2022/12/31 15:29

投稿

Jonathan_Sf
Jonathan_Sf

スコア13

test CHANGED
File without changes
test CHANGED
File without changes