パンダ:別のデータフレームの値に基づいて、データフレームに新しい列を追加します

追加-セミコロン

2つのデータフレームがあります。1つはuserId、性別、もう1つはこれらのユーザーのオンラインアクティビティを含むデータフレームです。

最初のデータフレーム (df1)

userId, gender
001, F
002, M
003, F
004, M
005, M
006, M

2番目のデータフレーム (df2)

userId, itemClicked, ItemBought, date
001, 123182, 123212, 02/02/2016
003, 234256, 123182, 05/02/2016
005, 986834, 234256, 04/19/2016
004, 787663, 787663, 05/12/2016
020, 465738, 465738, 03/20/2016
004, 787223, 787663, 07/12/2016

userIdに基づいて最初のデータフレームを検索することにより、2番目のデータフレームに性別列を追加したいと思います。df2は、同じユーザーが複数のアイテムをクリックした可能性があるクリックデータであるため、ユーザーごとに複数の行を持つ可能性があります。

これはMySqlで行うのは非常に簡単ですが、私はパンダでそれを行うことを理解しようとしています。

for index, row in df2.iterrows():
    user_id = row['userId']
    if user_id in df1['userId']:
        t = df1.loc[df1['userId'] == user_id]
        pdb.set_trace()

これはそのようなタスクへのパンダの方法ですか?

イズレエル
print (df1)
   userId gender
0       1      F
1       2      M
2       3      F
3       4      M
4       5      M
5       6      M

print (df2)
   userId  itemClicked  ItemBought        date
0       1       123182      123212  02/02/2016
1       3       234256      123182  05/02/2016
2       5       986834      234256  04/19/2016
3       4       787663      787663  05/12/2016
4      20       465738      465738  03/20/2016
5       4       787223      787663  07/12/2016

あなたが使用することができますmap

df2['gender'] = df2.userId.map(df1.set_index('userId')['gender'].to_dict())

print (df2)
   userId  itemClicked  ItemBought        date gender
0       1       123182      123212  02/02/2016      F
1       3       234256      123182  05/02/2016      F
2       5       986834      234256  04/19/2016      M
3       4       787663      787663  05/12/2016      M
4      20       465738      465738  03/20/2016    NaN
5       4       787223      787663  07/12/2016      M

両方のDataFrameで列のみが同じである場合はmerge、左結合を使用した別のソリューションであるパラメーターonを省略できますgender

df = pd.merge(df2, df1, how='left')

print (df)
   userId  itemClicked  ItemBought        date gender
0       1       123182      123212  02/02/2016      F
1       3       234256      123182  05/02/2016      F
2       5       986834      234256  04/19/2016      M
3       4       787663      787663  05/12/2016      M
4      20       465738      465738  03/20/2016    NaN
5       4       787223      787663  07/12/2016      M

タイミング

#len(df2) = 600k
df2 = pd.concat([df2]*100000).reset_index(drop=True)

def f(df1,df2):
    df2['gender'] = df2.userId.map(df1.set_index('userId')['gender'].to_dict())
    return df2


In [43]: %timeit f(df1,df2)
10 loops, best of 3: 34.2 ms per loop

In [44]: %timeit (pd.merge(df2, df1, how='left'))
10 loops, best of 3: 102 ms per loop

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

パンダのデータフレームの別の列の値に基づいて列を追加します

分類Dev

Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

分類Dev

パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

分類Dev

以前の値に基づいてパンダデータフレームに列を追加します

分類Dev

別のデータフレームに基づいてパンダに新しい列を作成する

分類Dev

パンダ-別のデータフレームに基づいて新しいデータフレームをどのように作成しますか?

分類Dev

値に基づいてパンダのデータフレームを繰り返し、データフレームにカウンターを追加します

分類Dev

パンダの別のデータフレームからの同様の値に基づいて、データフレームの列に入力します

分類Dev

別の列の値に基づいてパンダデータフレームに列を追加する

分類Dev

パンダは、別の列の値に基づいて列レベルを追加することにより、データフレームを再形成します

分類Dev

別の列の値に基づいて、パンダデータフレームの1つの列に値を追加します

分類Dev

条件に基づいてパンダデータフレームに新しい列を追加し、異なる列のNan値を置き換えます

分類Dev

パンダを使用して別のデータフレームに基づいてデータフレームに列を追加する

分類Dev

パンダ:データフレームの列を比較し、条件に基づいて新しい列と値を追加します

分類Dev

別のデータフレームの値を使用して、列名に基づいてパンダデータフレームの行を乗算します

分類Dev

行の最初の値に基づいて、データフレームに新しい列を追加します

分類Dev

別のデータフレーム値に基づいて、パンダデータフレームの行からシリーズ値を削除します

分類Dev

パンダの列の値に基づいてデータフレームの列を選択します

分類Dev

Pythonパンダ:別のデータフレームのカテゴリ値に基づいて新しい列を作成します

分類Dev

条件に基づいて別のデータフレームの値からデータフレームに新しい列を追加する

分類Dev

文字列列の値に基づいてパンダのデータフレームを分割します

分類Dev

列の値に基づいてパンダの2つのデータフレームを比較します

分類Dev

パンダは、列の同じ値に基づいてデータフレームをマージします

分類Dev

別のデータフレームに基づいてパンダのデータフレーム列に値を追加する

分類Dev

パンダの複数の条件に基づいて新しいデータフレームを追加する

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

分類Dev

列の値に基づいて複数のパンダデータフレームを作成します

分類Dev

パンダのデータフレームは、条件に基づいて列の値を変更します

Related 関連記事

  1. 1

    パンダのデータフレームの別の列の値に基づいて列を追加します

  2. 2

    Pyspark:udfを使用して、別のデータフレームの値に基づいてデータフレームに新しい列を追加します

  3. 3

    パンダ:特定の列の文字列値に基づいて、データフレームを個別のデータフレームに分割します

  4. 4

    以前の値に基づいてパンダデータフレームに列を追加します

  5. 5

    別のデータフレームに基づいてパンダに新しい列を作成する

  6. 6

    パンダ-別のデータフレームに基づいて新しいデータフレームをどのように作成しますか?

  7. 7

    値に基づいてパンダのデータフレームを繰り返し、データフレームにカウンターを追加します

  8. 8

    パンダの別のデータフレームからの同様の値に基づいて、データフレームの列に入力します

  9. 9

    別の列の値に基づいてパンダデータフレームに列を追加する

  10. 10

    パンダは、別の列の値に基づいて列レベルを追加することにより、データフレームを再形成します

  11. 11

    別の列の値に基づいて、パンダデータフレームの1つの列に値を追加します

  12. 12

    条件に基づいてパンダデータフレームに新しい列を追加し、異なる列のNan値を置き換えます

  13. 13

    パンダを使用して別のデータフレームに基づいてデータフレームに列を追加する

  14. 14

    パンダ:データフレームの列を比較し、条件に基づいて新しい列と値を追加します

  15. 15

    別のデータフレームの値を使用して、列名に基づいてパンダデータフレームの行を乗算します

  16. 16

    行の最初の値に基づいて、データフレームに新しい列を追加します

  17. 17

    別のデータフレーム値に基づいて、パンダデータフレームの行からシリーズ値を削除します

  18. 18

    パンダの列の値に基づいてデータフレームの列を選択します

  19. 19

    Pythonパンダ:別のデータフレームのカテゴリ値に基づいて新しい列を作成します

  20. 20

    条件に基づいて別のデータフレームの値からデータフレームに新しい列を追加する

  21. 21

    文字列列の値に基づいてパンダのデータフレームを分割します

  22. 22

    列の値に基づいてパンダの2つのデータフレームを比較します

  23. 23

    パンダは、列の同じ値に基づいてデータフレームをマージします

  24. 24

    別のデータフレームに基づいてパンダのデータフレーム列に値を追加する

  25. 25

    パンダの複数の条件に基づいて新しいデータフレームを追加する

  26. 26

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  27. 27

    特定の月の値に基づいて、別の列を条件としてパンダのデータフレームをフィルタリングします

  28. 28

    列の値に基づいて複数のパンダデータフレームを作成します

  29. 29

    パンダのデータフレームは、条件に基づいて列の値を変更します

ホットタグ

アーカイブ