teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

d

2020/08/26 10:00

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  df1、df2 があり、マージするキーを列 A としたとき、
2
2
  `df2[~df2["A"].isin(df1["A"])]` で df2 にしか含まれていない行を抽出してから、`pd.concat()` でマージすればいいと思います。
3
3
 
4
+ ## ある列でマージする場合
4
5
 
5
6
  ```python
6
7
  import pandas as pd
@@ -16,4 +17,16 @@
16
17
  # 2 3 c
17
18
  # 1 4 e
18
19
  # 2 5 f
20
+ ```
21
+
22
+ ## インデックスでマージする場合
23
+
24
+ ```python
25
+ import pandas as pd
26
+
27
+ df1 = pd.DataFrame({"B": ["a", "b", "c"]}, index=[1, 2, 3])
28
+ df2 = pd.DataFrame({"B": ["d", "e", "f"]}, index=[3, 4, 5])
29
+
30
+ df = pd.concat([df1, df2[~df2.index.isin(df1.index)]])
31
+ print(df)
19
32
  ```

1

d

2020/08/26 10:00

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  df1、df2 があり、マージするキーを列 A としたとき、
2
- `df2[~df2["A"].isin(df1["A"])` で df2 にしか含まれていない行を抽出してから、`pd.concat()` でマージすればいいと思います。
2
+ `df2[~df2["A"].isin(df1["A"])]` で df2 にしか含まれていない行を抽出してから、`pd.concat()` でマージすればいいと思います。
3
3
 
4
4
 
5
5
  ```python