2
私はPandasを初めて使い、非正規化フラットデータセットを作成しようとしており、それが可能かどうかを判断したいと考えています。概念的には単一の列( 'PID')に結合できる2つのデータフレーム(親と子)から始めます。ここでpandasデータフレームデータセットの行を折りたたみます
は、親データフレームである:ここで
parentData = [(1,’A’,100), (2,’B’,200)]
parentCols = [‘PID’, ‘PATTR1’, ‘PATTR1’]
parentDf = pd.DataFrame.from_records(parentData, columns=parentCols)
Parent Dataframe
PID PATTR1 PATTR2
0 1 A 100
1 2 B 200
は、子データフレームです:
childData = [(201,1,’AA’,2100), (202,2,’BB’,2200), (203,2,’CC’,2300)]
childCols = [‘CID’, ‘PID’, ‘CATTR1’, ‘CATTR1’]
childDf = pd.DataFrame.from_records(childData, columns=childCols)
Child Dataframe
CID PID PATTR1 PATTR2
0 201 1 AA 2100
1 202 2 BB 2200
2 203 2 CC 2300
はここで、親と子のマージです:
mergedDf = parentDf.merge(childDf, left_on=’PID’, right_on=’PID’, how=’outer’)
Parent merged with Child dataframe
PID PATTR1 PATTR2 CID CATTR1 CATTR2
0 1 A 100 201 AA 2100
1 2 B 200 202 BB 2200
2 2 B 200 203 CC 2300
そして、ここでは何ですか望ましい出力は次のとおりです。
| ???? | ????
PID PATTR1 PATTR2 | CID CATTR1 CATTR2 | CID CATTR1 CATTR2
0 1 A 100 | 201 AA 2100 |
1 2 B 200 | 202 BB 2200 | 203 CC 2300
Pandas APIドキュメントのマージ、再形成などのセクションを検索して読み込んだ後、希望する出力が可能かどうかはわかりませんでした。
事前にアドバイスや助力をいただき、ありがとうございます。
おかげで、これは私がまさに必要でした! – azw
@azw yw :-)、ハッピーコーディング – Wen