環境:Python3.6 win10
初学者です。階層型インデックスのあるデータフレームと、もう1つのデータフレームの2つを用いて計算したいと考えています。
具体的には、
data1(階層インデックスあり)
id1 | id2 | value1 | value2 | value3 | value4 |
---|---|---|---|---|---|
A | a | 1 | 5 | 3 | 40 |
A | b | 5 | 2 | 12 | 4 |
B | a | 6 | 21 | 3 | 4 |
B | b | 1 | 2 | 0 | 14 |
B | c | 7 | 12 | 3 | 4 |
C | a | 1 | 22 | 7 | 43 |
C | b | 8 | 2 | 3 | 89 |
D | a | 2 | 2 | 5 | 4 |
... | |||||
Z | a | 2 | 3 | 4 | 5 |
Z | b | 9 | 8 | 7 | 6 |
data2(data1と共通のid1のみ存在)
id1 | value1 | value2 | value3 | value4 |
---|---|---|---|---|
A | 2 | 53 | 4 | 42 |
B | 36 | 2 | 33 | 14 |
C | 12 | 2 | 37 | 3 |
D | 2 | 61 | 5 | 8 |
… | ||||
Z | 0 | 1 | 1 | 3 |
があったときに,「data1の値からdata2の値を引く。ただし計算は、id1に紐づけて行う(id2の数に関わらず、id1が同じ行は同じものとみなす)」という作業をしたいと考えております。
以下のような計算結果が欲しいです。
data3
id1 | id2 | value1 | value2 | value3 | value4 |
---|---|---|---|---|---|
A | a | 1-2 | 5-53 | 3-4 | 40-42 |
A | b | 5-2 | 2-53 | 12-4 | 4-42 |
B | a | 6-36 | 21-2 | 3-33 | 4-14 |
B | b | 1-36 | 2-2 | 0-33 | 14-14 |
B | c | 7-36 | 12-2 | 3-33 | 4-14 |
C | a | 1-12 | 22-2 | 7-37 | 43-3 |
C | b | 8-12 | 2-2 | 3-37 | 89-3 |
D | a | 2-2 | 2-61 | 5-5 | 4-8 |
... | |||||
Z | a | 2-0 | 3-1 | 4-1 | 5-3 |
Z | b | 9-0 | 8-1 | 7-1 | 6-3 |
付帯情報
0. data1とdata2のカラムの数(valueの数)は共通です。
- data1:id1(A,B,C…)あたりのid2の数は一定ではありません。また実際には、id1はアルファベットで表現できないほど沢山あります。
- data2:id1の数はdata1と共通です。
Python3
1data2.sub(data1)
といった方法を使うのかとも考えたのですが、いまいちよくわからない状況です。pandasかNumpyであればどのような方法でも構いません。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/08 00:47