monthly_quantity データフレームが18万行であるのにも関わらず、マージ後に行数が1300万行になる
monthly_quantity データフレームが18万行であるのにも関わらず、マージ後に行数が1300万行になるのは、マージ時にキーとなる列に重複があるためです。この問題を解決するために、マージ前に df データフレームを適切にフィルタリングすることが必要です。
たとえば、df データフレームには余分な行が含まれており、それらの行を削除してからマージすることで、望み通りの結果を得ることができます。
具体的な方法は、df データフレームをフィルタリングしてからマージすることです。df データフレームのうち、monthly_quantity データフレームの自社品番に含まれるもののみを残すことで、マージ後の行数を18万行に制限することができます。
以下はその例です:
python
import pandas as pd
# CSVファイルからDataFrameを読み込む
df = pd.read_csv("jutyu_data.csv", parse_dates=["受注日"], encoding="cp932")
# 月ごとの数量を集計する
df["月"] = df["受注日"].dt.month
monthly_quantity = df.groupby(["自社品番", "月"])["数量"].sum().reset_index()
# 年月の列を作成する
df["年月"] = df["受注日"].dt.to_period("M")
# df データフレームをフィルタリングする
filtered_df = df[df["自社品番"].isin(monthly_quantity["自社品番"])]
# マージする
merged_df = pd.merge(monthly_quantity, filtered_df, how="left", on=["自社品番", "年月"])
# 結果を表示する
print(merged_df)
この方法で、マージ後の行数を18万行に制限することができます。

ディスカッション
コメント一覧
まだ、コメントがありません