2017-03-17 9 views
0

(それは、この最小限例えば0である)どのようにmerged_data.duplicatedは0ではないだろうということができpandas - なぜ左の結合に新しい値と重複が導入されるのですか?

df1 = pd.DataFrame({'idNo':[1,2,3], 'value_1':[0,1,0]}) 
df2 = pd.DataFrame({'idNo':[1,2,3], 'value_2':[1,1,0]}) 
merged_data = pd.merge(df1, df2, on='idNo', how='left') 
print(df1.shape) 
print(merged_data.shape) 
merged_data.duplicated(subset=['idNo']).sum() 

のような操作を実行しますか?それが0より大きい場合、重複を安全に削除できますか?パンダは、何かを乱しているインデックスを介して参加していますか?

私の実際のデータをCSVから読み込むには、このような左結合操作で重複した値がたくさん出てくるが、その理由を理解していないという問題があります。重複を単に削除するのは安全ですか?

編集

これは基本的に列を連結するだけです。たぶん、重複を起こさないパンダでのより良い操作がありますか?

+2

ご迷惑をおかけして申し訳ございません。 'merged_data'自体はあなたに驚くでしょうか?あなたは 'merged_data.duplicated'について驚くべきことをもっと明確にすることができますか? – Denziloe

+0

私にとっては、 'merged_data'に二重引用符が含まれているのは驚くべきことです。私は列だけを連結するので。最新の編集もご覧ください。 –

+3

この例では重複はありません。結果として得られるデータフレーム 'merged_data'は3 x 3であり、行は全て異なっています。これがあなたが望む結果でない場合、DataFramesをマージしたいと思うようには聞こえません。質問を編集して、結果をどのように見せたいかの例を含めることをお勧めします。 – Denziloe

答えて

1

あなたはあなたのdf

df1 = pd.DataFrame({'idNo':[1,2,3], 'value':[0,1,0]}) 
df2 = pd.DataFrame({'idNo':[1,2,3,3], 'value':[1,1,0,1]}) 
merged_data = pd.merge(df1, df2, on='idNo', how='left') 
print(df1.shape) 
print(merged_data.shape) 
merged_data.duplicated(subset=['idNo']).sum() 

(3, 2) 
(4, 3) 

1 

これは完璧な理にかなってのいずれかで重複'idNo'を持っています!

+0

私は明らかに偉大なものではないとして質問を削除します参照してください。 –

関連する問題