特定の列の行を他の列との関係で集約し、集計データをjson形式で含む特定の列を作成したいとします。行を組み合わせて、SQLまたはPythonでデータフレーム内の単一の行に挿入する方法
これは例です。
オリジナルデータテーブル
Child Name Child Age Father Name Father Age
Peter 5 Richard 40
James 15 Doug 45
Liz 2 Doug 45
Paul 6 Richard 40
Shirly 11 Charles 33
Eva 9 Chris 29
変換されたデータテーブルは、どちらか
Father Name Father Age Children
Richard 40 {"Peter":"5", "Paul":"6"}
Doug 45 {"James":"15","Liz":"2"}
Charles 33 {"Shirly" : "11"}
Chris 29 {"Eva" : "9"}
それとも
Father Name Father Age Children Name Children Age
Richard 40 {"Peter", "Paul"} {"5","6"}
Doug 45 {"James", "Liz"} {"15","2"}
Charles 33 {"Shirly"} {"11"}
Chris 29 {"Eva"} {"9"}
私のコードがあるだろう
import pandas as pd
df = pd.DataFrame({
"Child Name" : ["Peter","James","Liz","Paul","Shirly","Eva"],
"Child Age" : ["5","15","2","6","11","9"],
"Father Name" : ["Richard","Doug","Doug","Richard","Charles","Chris"],
"Father Age" : ["40","45","45","40","33","29"] })
print df
g1 = df.groupby(["Father Name"])["Child Name"].apply(", ".join).reset_index()
g1.columns = ['Father Name','Children Name']
print g1
と出力は、私は列に「父年齢」と「子ども時代」を追加する方法を見つけ出すことはできません
Father Name Children Name
0 Charles Shirly
1 Chris Eva
2 Doug James, Liz
3 Richard Peter, Paul
になります。 これを最も効率的な方法でデータフレームでどのように変換できますか? 私は長い時間がかかるので、Python経由でループを避けたいです。
おかげで、
あなたの元のテーブルには、正規化されていません。別の父親のテーブルと子供のテーブルが必要です。 – Anand
元のテーブルの正規化についてはわかりません。簡単な例を使って詳細を詳しく説明できますか? –