80

ここには確かに単純なものが欠けています。ほとんど同じ列名を持つ pandas の 2 つのデータフレームをマージしようとしていますが、右側のデータフレームには左側にない列がいくつかあり、その逆も同様です。

>df_may

  id  quantity  attr_1  attr_2
0  1        20       0       1
1  2        23       1       1
2  3        19       1       1
3  4        19       0       0

>df_jun

  id  quantity  attr_1  attr_3
0  5         8       1       0
1  6        13       0       1
2  7        20       1       1
3  8        25       1       1

外部結合で結合しようとしました:

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")

しかし、それは次の結果をもたらします:

Left data columns not unique: Index([....

また、結合する単一の列 ( , など) を指定しましたが、 ,などon = "id"を除くすべての列が複製されます。これは理想的ではありません。また、列のリスト全体 (多数あります) を に渡しました。idattr_1_xattr_1_yon

mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer", on=list(df_may.columns.values))

どちらが得られますか:

ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

私は何が欠けていますか?attr_1すべての行が追加されたdfattr_2を取得したいと思いますattr_3。可能な場合は NaN が表示されます。これは、データ変更のかなり典型的なワークフローのように思えますが、行き詰まっています。

前もって感謝します。

4

3 に答える 3