あるデータフレームの列値を別のデータフレームのインデックスにマップし、値を抽出します

Raghavendra Channappa

私はパンダを学んで最初の数週間で、私が立ち往生している問題について助けが必要です。以下にリストされている2つのデータフレームがあります。

df1 = pd.DataFrame({
    'City': ['Chicago','Atlanta', 'Dallas', 'Atlanta', 'Chicago', 'Boston', 'Dallas','El Paso','Atlanta'],
    'State': ['IL','GA','TX','GA','IL','MA','TX','TX','GA'],
    'Population': [8865000,523738,6301000,523738,8865000,4309000,6301000,951000,523738]
}, columns=['City', 'State', 'Population'])

df1

    City    State   Population
0   Chicago IL     8865000
1   Atlanta GA     523738
2   Dallas  TX     6301000
3   Atlanta GA     523738
4   Chicago IL     8865000
5   Boston  MA     4309000
6   Dallas  TX     6301000
7   El Paso TX     951000
8   Atlanta GA     523738

df2 = pd.DataFrame({
    'Airport': ['Hartsfield','Logan','O Hare','DFW'],
    'M_Code': [78,26,52,39]
},index=[
    'Atlanta',
    'Boston',
    'Chicago',
    'Dallas'])


df2

          Airport        M_Code
Atlanta   Hartsfield     78
Boston    Logan          26
Chicago   O Hare         52
Dallas    DFW            39

期待される出力は次のとおりです。

df1

    City    State   Population  M_Code  City_indexed_in_df2
0   Chicago IL      8865000     52      True
1   Atlanta GA      523738      78      True
2   Dallas  TX      6301000     39      True
3   Atlanta GA      523738      78      True
4   Chicago IL      8865000     52      True
5   Boston  MA      4309000     26      True
6   Dallas  TX      6301000     39      True
7   El Paso TX      951000      NaN     False
8   Atlanta GA      523738      78      True

私は始めました:

df1.loc[df1.City.isin(df2.index),:]

    City    State   Population
0   Chicago IL  8865000
1   Atlanta GA  523738
2   Dallas  TX  6301000
3   Atlanta GA  523738
4   Chicago IL  8865000
5   Boston  MA  4309000
6   Dallas  TX  6301000
8   Atlanta GA  523738

予想通り、これはエルパソで行を除外します。しかし、これを行うためのコードを思い付くことができません->すべてのdf1.Cityについて、df2.indexを検索する必要があります。見つかった場合:

  1. df2.M_Codeを抽出し、値を新しい列df1.M_Codeに挿入します
  2. ブール結果を新しい列df1.City_indexed_in_df2に挿入します

誰かが私がこれを達成する方法を手伝ってくれますか?さらに、df1.Cityから一意の配列を作成してから、df2.indexでルックアップを実行すると、パフォーマンスが向上する可能性があると思います(初心者なので、以下の一意の配列を抽出する以外にこれを行う方法を理解していません。 )

arr = df1.City.unique()

array(['Chicago', 'Atlanta', 'Dallas', 'Boston', 'El Paso'], dtype=object)

ソリューションアプローチの変更に関する提案も素晴らしいでしょう。

NYCコーダー

これを行うにmergehow='left'、次を使用して新しい列を作成しますnotna()

df = df1.merge(df2, left_on=['City'], right_index=True, how='left')
df['City_indexed_in_df2'] = df['M_Code'].notna()
print(df)

      City State  Population     Airport  M_Code  City_indexed_in_df2
0  Chicago    IL     8865000      O Hare    52.0                 True
1  Atlanta    GA      523738  Hartsfield    78.0                 True
2   Dallas    TX     6301000         DFW    39.0                 True
3  Atlanta    GA      523738  Hartsfield    78.0                 True
4  Chicago    IL     8865000      O Hare    52.0                 True
5   Boston    MA     4309000       Logan    26.0                 True
6   Dallas    TX     6301000         DFW    39.0                 True
7  El Paso    TX      951000         NaN     NaN                False
8  Atlanta    GA      523738  Hartsfield    78.0                 True

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

あるデータフレームのリストから別のデータフレームの一意の値に値をマップします

分類Dev

インデックスと列が別のデータフレームの値であるPandasデータフレームにデータを入力する

分類Dev

パンダ-あるデータフレームから別のデータフレームに値をマップします

分類Dev

パンダ-あるデータフレームから別のデータフレームに値をマップします

分類Dev

あるデータフレームを使用して別のデータフレームの値とインデックスを検索する方法

分類Dev

あるデータフレームの値をルックアップし、別のデータフレームに貼り付けます

分類Dev

ディクショナリ値をデータフレーム列のキー値にマップします

分類Dev

マルチインデックスデータフレームのインデックス値をPythonの単純なリストとして抽出します

分類Dev

パンダの別のデータフレームの列と等しいインデックス値を持つマルチレベルインデックスデータフレームの行を選択します

分類Dev

複数の列のインデックスに基づいて、あるデータフレームから別のデータフレームに値をコピーします

分類Dev

行に応じて異なるインデックス列を持つパンダデータフレームの値を抽出します

分類Dev

データフレームの列と行を、別のデータフレームの列の値に基づいて特定のインデックスにマージします

分類Dev

Pandasデータフレーム内の重複する各行に値/インデックスを追加します

分類Dev

あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

分類Dev

データフレームの1つの列の値を別のデータフレームの2つの列にマップし、マップされた値を抽出する方法は?

分類Dev

pd.mergeを使用して、データフレーム内の複数の列の値を別のデータフレームからマップします

分類Dev

データフレームの特定の列で最大値の行インデックスを検索します

分類Dev

最後の行からデータフレームのインデックス列の値を取得します

分類Dev

両方のデータフレームにまったく同じ列とインデックスがある場合、別のデータフレームの条件を照合して、あるデータフレームのデータをグループ化するにはどうすればよいですか?

分類Dev

データフレームのある列から別の列に値をマップする方法は?

分類Dev

pandasデータフレームの他のインデックス値に基づいてインデックス値をグループ化します

分類Dev

列データフレームの値を使用して列インデックスを検索する

分類Dev

Pandasデータフレーム-行の最小値の列インデックスを取得します

分類Dev

複数のアイテムをパンダデータフレームの値にマップします

分類Dev

マルチインデックス列のデータフレームに値を追加する方法

分類Dev

キーが1つの列で、置換される値が別の列であるデータフレームの値を再マップします

分類Dev

R - あるデータフレームから要素のインデックスを検索し、別のデータフレームに配置する

分類Dev

インデックスなしでデータフレーム列の最後の値を取得する

分類Dev

マルチインデックスデータフレームからデータのサブセットを抽出し、列の差を計算します

Related 関連記事

  1. 1

    あるデータフレームのリストから別のデータフレームの一意の値に値をマップします

  2. 2

    インデックスと列が別のデータフレームの値であるPandasデータフレームにデータを入力する

  3. 3

    パンダ-あるデータフレームから別のデータフレームに値をマップします

  4. 4

    パンダ-あるデータフレームから別のデータフレームに値をマップします

  5. 5

    あるデータフレームを使用して別のデータフレームの値とインデックスを検索する方法

  6. 6

    あるデータフレームの値をルックアップし、別のデータフレームに貼り付けます

  7. 7

    ディクショナリ値をデータフレーム列のキー値にマップします

  8. 8

    マルチインデックスデータフレームのインデックス値をPythonの単純なリストとして抽出します

  9. 9

    パンダの別のデータフレームの列と等しいインデックス値を持つマルチレベルインデックスデータフレームの行を選択します

  10. 10

    複数の列のインデックスに基づいて、あるデータフレームから別のデータフレームに値をコピーします

  11. 11

    行に応じて異なるインデックス列を持つパンダデータフレームの値を抽出します

  12. 12

    データフレームの列と行を、別のデータフレームの列の値に基づいて特定のインデックスにマージします

  13. 13

    Pandasデータフレーム内の重複する各行に値/インデックスを追加します

  14. 14

    あるデータフレームを別のデータフレームに挿入した後にインデックスをリセットする方法

  15. 15

    データフレームの1つの列の値を別のデータフレームの2つの列にマップし、マップされた値を抽出する方法は?

  16. 16

    pd.mergeを使用して、データフレーム内の複数の列の値を別のデータフレームからマップします

  17. 17

    データフレームの特定の列で最大値の行インデックスを検索します

  18. 18

    最後の行からデータフレームのインデックス列の値を取得します

  19. 19

    両方のデータフレームにまったく同じ列とインデックスがある場合、別のデータフレームの条件を照合して、あるデータフレームのデータをグループ化するにはどうすればよいですか?

  20. 20

    データフレームのある列から別の列に値をマップする方法は?

  21. 21

    pandasデータフレームの他のインデックス値に基づいてインデックス値をグループ化します

  22. 22

    列データフレームの値を使用して列インデックスを検索する

  23. 23

    Pandasデータフレーム-行の最小値の列インデックスを取得します

  24. 24

    複数のアイテムをパンダデータフレームの値にマップします

  25. 25

    マルチインデックス列のデータフレームに値を追加する方法

  26. 26

    キーが1つの列で、置換される値が別の列であるデータフレームの値を再マップします

  27. 27

    R - あるデータフレームから要素のインデックスを検索し、別のデータフレームに配置する

  28. 28

    インデックスなしでデータフレーム列の最後の値を取得する

  29. 29

    マルチインデックスデータフレームからデータのサブセットを抽出し、列の差を計算します

ホットタグ

アーカイブ