前提・実現したいこと
pythonのマージについて質問です。
【前提】
①df2:6730行
②df_files:6486行(画像ファイルのpathからデータフレームにしたもの)
この2つのデータを内部結合した時、6730行になってしまいます。
私の認識では双方のキーが一致したもののみ残るので最大で6486行かと思います。
なぜ実行した結果が6730行になってしまったのでしようか?
発生している問題・エラーメッセー
6730行と6486行のデータを内部結合した結果、6730行になってしまう。
該当のソースコード
#追加:df2の作成
import pandas as pd import numpy as np import glob import cv2 df = pd.read_csv("anotation_result.csv") df.shape
(8100, 2)
df2 = df.copy() df2.isnull().sum()
data 0
smile 65
dtype: int64
df2 = df2.dropna() df2.isnull().sum()
data 0
smile 0
dtype: int64
df2.shape
(8035, 2)
df2 = df2.drop_duplicates() df2.duplicated().sum()
0
df2.shape
(6731, 2)
df2.to_csv("data2.csv")
####df2を読み込み
df2 = pd.read_csv("data2.csv") df2.shape
#####フォルダ内の画像データのpathを読み込み
files = glob.glob("/画像データのあるフォルダのpath/*") len(files)
6486
######filesのデータフレームを作成
df_files = pd.DataFrame({"data":files}) df_files.drop_duplicates() df_files.duplicated().sum()
0
#####マージ
df_join = pd.merge(df2, df_files, how="inner",on="data",indicator=True) df_join df_join["_merge"].value_counts()
both 6730
right_only 0
left_only 0
Name: _merge, dtype: int64
回答1件
あなたの回答
tips
プレビュー