情報を保持しながら列のデータフレームをマージする
Pandas を使用して Python でデータを操作する場合、共通の列に基づいてデータフレームをマージするのが一般的ですタスク。ただし、特に重複しているが不完全なデータが含まれている場合、両方のデータフレームからの情報を保持する必要がある場合があります。この記事では、プライマリ データフレームからの情報を確実に保持しながら列のデータフレームをマージするソリューションについて説明します。
問題ステートメント
2 つのデータフレーム df1 と df2 について考えます。 df1 には個人の年齢に関する情報が含まれ、df2 には性別に関する情報が含まれます。目標は、「名前」列の df1 と df2 をマージしますが、df1 からの情報のみを保持することです。個人が両方のデータフレームに常に存在するとは限りません。
解決策
これを実現するには、次のインデックスを設定して作成された Series の map() メソッドを使用できます。マージする列に 1 つのデータフレームを追加します。 map() メソッドを使用すると、マッピング関数を適用できます。この場合、他のデータフレームでのルックアップになります。
<code class="python"># Create the dataframes df1 = pd.DataFrame({'Name': ['Tom', 'Sara', 'Eva', 'Jack', 'Laura'], 'Age': [34, 18, 44, 27, 30]}) df2 = pd.DataFrame({'Name': ['Tom', 'Paul', 'Eva', 'Jack', 'Michelle'], 'Sex': ['M', 'M', 'F', 'M', 'F']}) # Set the index of df2 to Name df2.set_index('Name', inplace=True) # Perform the lookup using map df1['Sex'] = df1['Name'].map(df2['Sex']) # Display the merged dataframe print(df1)</code>
代替解決策: Left Join
あるいは、左結合を使用したマージを使用することもできます。これにより、df2 に対応する行がない場合でも、df1 のすべての行がマージされたデータフレームに確実に含まれます。
<code class="python"># Perform the left join df3 = df1.merge(df2, on='Name', how='left') # Display the merged dataframe print(df3)</code>
注: データフレームにマージ対象の複数の列が含まれている場合は、merge(on=[' Year', 'Code'], how='left') を使用するか、左マージ後の列を指定します (例: df1.merge() df2[['年', 'コード', 'Val']], on=['年', 'コード'], how='left')).
重複の処理
マージに使用される列に重複がある場合は、あいまいさを避けるために重複値を処理することが重要です。これは、drop_duplicates() を使用するか、辞書を使用してマッピングを指定することで実行できます。
以上がプライマリ データフレームからの情報を保持しながら列のデータフレームをマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。