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

回答編集履歴

2

修正

2020/12/08 13:18

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  ```python
9
9
  import pandas as pd
10
10
 
11
- df10 = pd.DataFrame(
11
+ df1 = pd.DataFrame(
12
12
  [
13
13
  [3320, "東1", 2, 3, "aaa"],
14
14
  [6701, "東2", 11, 12,],
@@ -18,11 +18,12 @@
18
18
  columns=["番号", "市場", "前日比", "利益", "業種"],
19
19
  )
20
20
 
21
- df12 = pd.DataFrame(
21
+ df2 = pd.DataFrame(
22
22
  [[3320, "電気"], [6701, "石油"], [4536, "通信"], [7777,]], columns=["番号", "業種"]
23
23
  )
24
24
 
25
- merged = pd.merge(df10, df12, on="番号", suffixes=("", "_y"))
25
+ merged = pd.merge(df1, df2, on="番号", suffixes=("", "_y"))
26
+ merged["業種"].update(merged["業種_y"])
26
27
 
27
28
  # _y で終わる列を削除
28
29
  merged = merged[[x for x in merged.columns if not x.endswith("_y")]]

1

d

2020/12/08 13:18

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -1,4 +1,4 @@
1
- 列名が重複した場合、左側の列を残すとして
1
+ 列名が重複した場合、左側の DataFrame の列を残すとして
2
2
 
3
3
  1. `suffixes=("", "_y")` で重複する列は右側の DataFrame のほうに _y をつける
4
4
  2. 結合したあとに _y で終わる列を削除する
@@ -27,4 +27,11 @@
27
27
  # _y で終わる列を削除
28
28
  merged = merged[[x for x in merged.columns if not x.endswith("_y")]]
29
29
  print(merged)
30
- ```
30
+ ```
31
+
32
+ > suffixeslist-like, default is (“_x”, “_y”)
33
+ A length-2 sequence where each element is optionally a string indicating the suffix to add to overlapping column names in left and right respectively. Pass a value of None instead of a string to indicate that the column name from left or right should be left as-is, with no suffix. At least one of the values must not be None.
34
+
35
+ * [pandas.DataFrame.merge — pandas 1.1.4 documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html)
36
+
37
+ * [pandas - DataFrame を結合する pandas.merge の使い方 ](https://pystyle.info/pandas-merge/#outline__2_4)