使用環境
- OS:Windows 10 Pro(バージョン:20H2)
- 言語:Python(pandasライブラリ)
経緯
Pythonでプログラムを作成中、concat()関数を使ってDataFrameを結合しようとしたところ、
以下のエラーが発生しました。
ValueError: Shape of passed values is (3493518, 2), indices imply (2611, 2)
何が原因か分からなかったため、エラー原因の特定と対処法について調べました。
原因
エラー文からわかるとおり、
- 実際に結合しようとしたデータの形(3493518行×2列)と
- インデックスが示す形(2611行×2列)
に不一致があったことが原因でした。
つまり、結合対象のDataFrame(df1とdf2)の行数が異なっていたことが問題でした。
対処法
まず、len()関数を使って、それぞれのデータの行数を確認しました。
print(len(df1))
print(len(df2))
実行してみると、df1とdf2で行数が異なることが判明しました。
データの中身をさらに確認したところ、不要なデータが含まれていたため、
その不要なデータを削除し、行数を揃えたうえで、改めてconcat()を実行しました。
修正後のコード
df = pd.concat([df1, df2], axis=1)
これにより、エラーが解消され、無事にDataFrameを結合することができました。
まとめ
DataFrameをconcat()などで結合する際には、
事前にデータ同士の行数やインデックスの整合性を確認することが非常に重要だと感じました。
特に、
len(df)で行数確認df.shapeで全体の形状確認df.indexでインデックス確認
など、随時データの状態をチェックする習慣をつけることで、エラーを未然に防げます。
これからも、結合処理の前にはしっかりデータ確認をしてから進めていきたいと思います。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
