monthly_quantity データフレームが18万行であるのにも関わらず、マージ後に行数が1300万行になる

2024年6月17日

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万行に制限することができます。

未分類

Posted by ぼっち