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

阿里巴赫蒂亚里

我有一个看起来像这样的数据框(df):

HOUSEID    PERSONID      WHY_TRP
20000017      1            1
20000017      1            1
20000017      1            1
20000017      2            1
20000017      2            3
20000231      1            11
20000231      1            11
20000231      2            11
20000521      1            11
20000521      2            11
20000521      2            3

每行描述一个人的旅行。我有另一种相同类型的数据框,其中每一行都描述一个人(df_p):

    HOUSEID   PERSONID   
    20000017      1      
    20000017      2     
    20000231      1    
    20000231      2    
    20000521      1    
    20000521      2 

我想在第二个数据框中添加三个新列,以显示每个人的1、3和11频率。基本上,我已经有了另一个具有其他功能的数据帧(df_p),所以我不应该使用groupby。由于某些原因,第一个和第二个数据框的人数不相同。这就是为什么我需要以下策略。这是我尝试的代码,但要花几个小时才能完成(100万次迭代):

df_p.insert(2, 'WHY_TRP_1', 0)
df_p.insert(3, 'WHY_TRP_2', 0)
df_p.insert(4, 'WHY_TRP_3', 0)

def trip_counter(i, r):
  if r[2] == 1:
    df_p.loc[(df_p['HOUSEID'] == r[0]) & (df_p['PERSONID'] == r[1]), ['WHY_TRP_1']] += 1 
  elif r[2] == 3:
    df_p.loc[(df_p['HOUSEID'] == r[0]) & (df_p['PERSONID'] ==  r[1]), ['WHY_TRP_3']] += 1 
  elif r[2] == 11:
    df_p.loc[(df_p['HOUSEID'] == r[0]) & (df_p['PERSONID'] ==  r[1]), ['WHY_TRP_11']] += 1


for i ,r in df.iterrows():
  trip_counter(i ,r) 

输出:

     HOUSEID   PERSONID   WHY_TRP_1     WHY_TRP_3      WHY_TRP_11
    20000017      1            3            0            0
    20000017      2            1            1            0
    20000231      1            0            0            2
    20000231      2            0            0            1
    20000521      1            0            0            1
    20000521      2            0            1            1          

有更快的方法吗?

谢谢

戴维·埃里克森

使用pd.get_dummies.groupby().sum()并pd.merge()把它放回原来的数据框(编辑:我在加入pd.merge逻辑刚才给我们再看一下后完全回答你的问题请问这个答案?)

df1 = pd.get_dummies(df, columns=['WHY_TRP']).groupby(['HOUSEID', 'PERSONID']).sum().reset_index()
df2 = pd.merge(df, df1, how='left', on=['HOUSEID', 'PERSONID'])
df2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

根据熊猫索引将熊猫列从数据框合并到另一个数据框

来自分类Dev

根据另一个数据框python熊猫替换列值-更好的方法?

来自分类Dev

根据另一个数据框的内容向熊猫数据框添加一列

来自分类Dev

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

来自分类Dev

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

来自分类Dev

根据另一个数据框的列对数据框列进行排序

来自分类Dev

用另一个数据框的值填充数据框列

来自分类Dev

使用熊猫基于另一个数据框向数据框添加列

来自分类Dev

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

来自分类Dev

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

来自分类Dev

根据条件为另一个数据框的数据框列设置值

来自分类Dev

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

来自分类Dev

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

来自分类Dev

根据另一个数据框的值删除一个数据框的行和列

来自分类Dev

如何搜索熊猫数据框以填充另一个数据框?

来自分类Dev

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

来自分类Dev

根据熊猫数据框中另一列的最后一个值填充列

来自分类Dev

根据一组预定义的列填充另一个数据框中的值

来自分类Dev

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

来自分类Dev

熊猫:将另一个数据框的列与列相乘?

来自分类Dev

比较两个数据框,然后根据另一个数据框向其中一个数据框添加新列

来自分类Dev

根据另一个数据框列值pyspark设置列状态

来自分类Dev

根据给熊猫中另一个数据框中的列赋予的条件对数据框中的列执行操作

来自分类Dev

根据另一个数据框的值填充一个数据框的值

来自分类Dev

根据特定列将pandas数据框列替换为另一个数据框

来自分类Dev

用另一个数据框的值填充多列

来自分类Dev

用另一个数据框的值填充多列

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    根据熊猫索引将熊猫列从数据框合并到另一个数据框

  4. 4

    根据另一个数据框python熊猫替换列值-更好的方法?

  5. 5

    根据另一个数据框的内容向熊猫数据框添加一列

  6. 6

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

  7. 7

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

  8. 8

    根据另一个数据框的列对数据框列进行排序

  9. 9

    用另一个数据框的值填充数据框列

  10. 10

    使用熊猫基于另一个数据框向数据框添加列

  11. 11

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

  12. 12

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

  13. 13

    根据条件为另一个数据框的数据框列设置值

  14. 14

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

  15. 15

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

  16. 16

    根据另一个数据框的值删除一个数据框的行和列

  17. 17

    如何搜索熊猫数据框以填充另一个数据框?

  18. 18

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

  19. 19

    根据熊猫数据框中另一列的最后一个值填充列

  20. 20

    根据一组预定义的列填充另一个数据框中的值

  21. 21

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

  22. 22

    熊猫:将另一个数据框的列与列相乘?

  23. 23

    比较两个数据框,然后根据另一个数据框向其中一个数据框添加新列

  24. 24

    根据另一个数据框列值pyspark设置列状态

  25. 25

    根据给熊猫中另一个数据框中的列赋予的条件对数据框中的列执行操作

  26. 26

    根据另一个数据框的值填充一个数据框的值

  27. 27

    根据特定列将pandas数据框列替换为另一个数据框

  28. 28

    用另一个数据框的值填充多列

  29. 29

    用另一个数据框的值填充多列

热门标签

归档