Pandasは異なるカラムを持つ2つのデータフレームをマージする
2023-08-18 16:44:29
質問
私はきっとここで何か簡単なことを見逃しています。ほとんど同じ列名を持つ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
外側joinで結合してみました。
mayjundf = pd.DataFrame.merge(df_may, df_jun, how="outer")
しかし、それは降伏する。
Left data columns not unique: Index([....
また、結合するカラムを1つだけ指定しました (
on = "id"
など) も指定しましたが、これでは
id
のように
attr_1_x
,
attr_1_y
といった具合に、理想的ではありません。また、カラムのリスト全体(たくさんあります)を
on
:
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)
何が足りないのでしょうか?私はすべての行が追加されたdfを取得したいのですが、その際
attr_1
,
attr_2
,
attr_3
可能な場合はpopulated、表示されない場合はNaN。これはデータマイニングの典型的なワークフローのように思えますが、私は行き詰っています。
事前にありがとうございます。
どのように解決するのですか?
私はこの場合
concat
が欲しいところです。
In [12]:
pd.concat([df,df1], axis=0, ignore_index=True)
Out[12]:
attr_1 attr_2 attr_3 id quantity
0 0 1 NaN 1 20
1 1 1 NaN 2 23
2 1 1 NaN 3 19
3 0 0 NaN 4 19
4 1 NaN 0 5 8
5 0 NaN 1 6 13
6 1 NaN 1 7 20
7 1 NaN 1 8 25
を渡すことで
axis=0
では、df を互いに積み重ねています。
NaN
の値を生成しています。
関連
-
[解決済み] Pandasのデータフレームで複数の列を選択する
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み】PandasでSettingWithCopyWarningに対処する方法
-
[解決済み】Pandas DataFrameのより多くの列を見るために出力表示を拡大する方法は?
-
[解決済み】Pandas - カラムの階層型インデックスを平坦化する方法
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] バブルソートの宿題
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例