【解決方法】列の 2 つのデータフレームと別の列の条件をマージするにはどうすればよいですか?


以下のクエリをパンダに変換しようとしていますが、行き詰まっています。

SQL
SELECT
    *
  FROM
    temp_rejects
  WHERE
    reject_type = 'REWORK'
),
rejects AS (
  SELECT
    *
  FROM
    temp_rejects
  WHERE
    reject_type = 'SCRAP'
)
SELECT
  rj.*
FROM
  reworks rw
  LEFT JOIN rejects rj ON rw.barcode = rj.barcode
AND
  rw.created_date < rj.created_date

私が試したこと:

私はそれを試しました:

Python
rewB4rej = data_manager.data['rejects_data']
rew = rewB4rej.query('reject_type == "REWORK"').reset_index()
rej = rewB4rej.query('reject_type == "SCRAP"').reset_index()
rewB4rej = rew.merge(rej, on=['barcode', (rew.created_date >
rej.created_date)], how='left')

また、 .query() を使用しようとしましたが、「

Can only compare identically-labeled DataFrame objects

解決策 1

これは、列ラベルが一致しているが、インデックス ラベルが一致していないためだと考えられます。

あなたの場合、 インデックスを削除する そして試してください:

Python
rewB4rej = data_manager.data['rejects_data']
rew = rewB4rej.query('reject_type == "REWORK"').reset_index(drop=True)
rej = rewB4rej.query('reject_type == "SCRAP"').reset_index(drop=True)
rewB4rej = rew.merge(rej, on=['barcode', (rew.created_date >
rej.created_date)], how='left')

コメント

タイトルとURLをコピーしました