熊猫:根据另一个数据框中的值在数据框中添加新列

加分号

我有两个数据框,其中一个具有userId和gender,另一个数据框具有这些用户的在线活动。

第一个数据框 (df1)

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

第二数据框 (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查找第一个数据框来将性别列添加到第二个数据框。df2每个用户可能会有多行,因为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

如果两个DataFrames中只有一列相同,则可以省略merge和保留左联接参数的另一种解决方案ongender

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

根据与另一个数据框的匹配在数据框中创建新列

来自分类Dev

R-根据另一个数据框的列中的值满足的条件,在数据框列中添加值(由公式得出)

来自分类Dev

根据另一个数据框中的值将列添加到数据框中

来自分类Dev

语言:如何根据另一个数据框在数据框中创建新列?

来自分类Dev

根据另一个数据框计算数据框中的列值

来自分类Dev

根据另一个数据框向熊猫数据框列添加值

来自分类Dev

Pyspark:使用udf根据另一个数据框中的值向数据框中添加新列

来自分类Dev

根据熊猫中另一列上的值在数据框中创建一个新列

来自分类Dev

根据关键列值熊猫将一个数据框中的行与另一个数据框中的行匹配

来自分类Dev

根据另一个数据框中的值在数据框中创建列表列

来自分类Dev

根据另一个数据框/列表在数据框中的列子集

来自分类Dev

如何根据另一个数据框中的查找值替换熊猫数据框值?

来自分类Dev

根据条件从另一个数据框的值向数据框添加新列

来自分类Dev

搜索和查找从另一个数据框中的一个数据框中搜索值,并根据熊猫中的查找值填充新列

来自分类Dev

从另一个数据框中更新熊猫数据框中的特定值

来自分类Dev

根据另一个数据集中的列值在一个数据框中创建列

来自分类Dev

根据另一个数据框中的日期过滤数据框中的值

来自分类Dev

熊猫,从另一个数据框中添加列读取值

来自分类Dev

用另一个数据框的列填充熊猫中的数据框列

来自分类Dev

根据id列中的公共值从另一个数据框中减去数据框的行

来自分类Dev

Python根据另一个数据框值中存在的列索引填充数据框值

来自分类Dev

根据条件从另一个数据框中复制列值

来自分类Dev

Python根据另一个数据框中的列值匹配列名

来自分类Dev

Python根据另一个数据框中的列值匹配列名

来自分类Dev

如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

来自分类Dev

根据另一个数据框从数据框中设置子集/选择列

来自分类Dev

根据python中另一个数据框的2列过滤数据框

来自分类Dev

在数据框中创建一个新变量,条件是另一个数据框

Related 相关文章

  1. 1

    根据另一个数据框的行值在数据框中添加新列

  2. 2

    根据与另一个数据框的匹配在数据框中创建新列

  3. 3

    R-根据另一个数据框的列中的值满足的条件,在数据框列中添加值(由公式得出)

  4. 4

    根据另一个数据框中的值将列添加到数据框中

  5. 5

    语言:如何根据另一个数据框在数据框中创建新列?

  6. 6

    根据另一个数据框计算数据框中的列值

  7. 7

    根据另一个数据框向熊猫数据框列添加值

  8. 8

    Pyspark:使用udf根据另一个数据框中的值向数据框中添加新列

  9. 9

    根据熊猫中另一列上的值在数据框中创建一个新列

  10. 10

    根据关键列值熊猫将一个数据框中的行与另一个数据框中的行匹配

  11. 11

    根据另一个数据框中的值在数据框中创建列表列

  12. 12

    根据另一个数据框/列表在数据框中的列子集

  13. 13

    如何根据另一个数据框中的查找值替换熊猫数据框值?

  14. 14

    根据条件从另一个数据框的值向数据框添加新列

  15. 15

    搜索和查找从另一个数据框中的一个数据框中搜索值,并根据熊猫中的查找值填充新列

  16. 16

    从另一个数据框中更新熊猫数据框中的特定值

  17. 17

    根据另一个数据集中的列值在一个数据框中创建列

  18. 18

    根据另一个数据框中的日期过滤数据框中的值

  19. 19

    熊猫,从另一个数据框中添加列读取值

  20. 20

    用另一个数据框的列填充熊猫中的数据框列

  21. 21

    根据id列中的公共值从另一个数据框中减去数据框的行

  22. 22

    Python根据另一个数据框值中存在的列索引填充数据框值

  23. 23

    根据条件从另一个数据框中复制列值

  24. 24

    Python根据另一个数据框中的列值匹配列名

  25. 25

    Python根据另一个数据框中的列值匹配列名

  26. 26

    如果前两列都匹配,则将数据框的一列中的值添加到另一个数据框的新列中

  27. 27

    根据另一个数据框从数据框中设置子集/选择列

  28. 28

    根据python中另一个数据框的2列过滤数据框

  29. 29

    在数据框中创建一个新变量,条件是另一个数据框

热门标签

归档