当前位置: 首页 > 面试题库 >

向原始数据框添加虚拟列

刘凡
2023-03-14
问题内容

我有一个数据框看起来像这样:

             JOINED_CO GENDER EXEC_FULLNAME GVKEY年CONAME BECAMECEO重新加入LEFTOFC LEFTCO RELEFT原因页面
CO_PER_ROL                                                                                                                                     
5622 NaN MALE Ira A.Eichner 1004 1992 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1993 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1994 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1995 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1996 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1997 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5622 NaN MALE Ira A.Eichner 1004 1998 AAR CORP 19550101 NaN 19961001 19990531 NaN辞职79
5623 NaN MALE David P.Storch 1004 1992 AAR CORP 19961009 NaN NaN NaN NaN NaN 57
5623 NaN MALE David P.Storch 1004 1993 AAR CORP 19961009 NaN NaN NaN NaN NaN 57
5623 NaN MALE David P.Storch 1004 1994 AAR CORP 19961009 NaN NaN NaN NaN NaN 57
5623 NaN MALE David P.Storch 1004 1995 AAR CORP 19961009 NaN NaN NaN NaN NaN 57
5623 NaN MALE David P.Storch 1004 1996 AAR CORP 19961009 NaN NaN NaN NaN NaN 57

对于YEAR值,我想在原始数据帧中添加year列(1993,1994 …,2009)。如果YEAR中的值为1992,则1992列中的值应为1,否则为0。

我使用了一个非常愚蠢的for循环,但是由于我拥有大量数据集,它似乎可以永远运行。谁能帮助我,非常感谢!


问题答案:
In [77]: df = pd.concat([df, pd.get_dummies(df['YEAR'])], axis=1); df
Out[77]: 
      JOINED_CO GENDER    EXEC_FULLNAME  GVKEY  YEAR    CONAME  BECAMECEO  \
5622        NaN   MALE   Ira A. Eichner   1004  1992  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1993  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1994  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1995  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1996  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1997  AAR CORP   19550101   
5622        NaN   MALE   Ira A. Eichner   1004  1998  AAR CORP   19550101   
5623        NaN   MALE  David P. Storch   1004  1992  AAR CORP   19961009   
5623        NaN   MALE  David P. Storch   1004  1993  AAR CORP   19961009   
5623        NaN   MALE  David P. Storch   1004  1994  AAR CORP   19961009   
5623        NaN   MALE  David P. Storch   1004  1995  AAR CORP   19961009   
5623        NaN   MALE  David P. Storch   1004  1996  AAR CORP   19961009

      REJOIN   LEFTOFC    LEFTCO  RELEFT    REASON  PAGE  1992  1993  1994  \
5622     NaN  19961001  19990531     NaN  RESIGNED    79     1     0     0   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     1     0   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     0     1   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     0     0   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     0     0   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     0     0   
5622     NaN  19961001  19990531     NaN  RESIGNED    79     0     0     0   
5623     NaN       NaN       NaN     NaN       NaN    57     1     0     0   
5623     NaN       NaN       NaN     NaN       NaN    57     0     1     0   
5623     NaN       NaN       NaN     NaN       NaN    57     0     0     1   
5623     NaN       NaN       NaN     NaN       NaN    57     0     0     0   
5623     NaN       NaN       NaN     NaN       NaN    57     0     0     0

      1995  1996  1997  1998  
5622     0     0     0     0  
5622     0     0     0     0  
5622     0     0     0     0  
5622     1     0     0     0  
5622     0     1     0     0  
5622     0     0     1     0  
5622     0     0     0     1  
5623     0     0     0     0  
5623     0     0     0     0  
5623     0     0     0     0  
5623     1     0     0     0  
5623     0     1     0     0

如果您想删除该YEAR列,则可以通过进行后续操作del df['YEAR']。或者,在调用之前YEAR从中删除列:df``concat

df = pd.concat([df.drop('YEAR', axis=1), pd.get_dummies(df['YEAR'])], axis=1)


 类似资料:
  • 我正在使用Pandas,希望将行添加到已建立列的空数据框中。 到目前为止,我的代码看起来像这样。。。 然而,当我跑步的时候。。。 数据框返回时没有行,只有列。我不确定我做错了什么,但我很确定它与append方法有关。有人知道我做错了什么吗?

  • JBoss 数据虚拟化平台测试报告 JBoss 数据虚拟化平台测试报告内容包括: 功能性测试 性能指标报告 重要链接 JBoss 数据虚拟化认证配置 - https://access.redhat.com/articles/703663

  • 目前,我学习如何使用SpringBoot和访问多个数据库。在学习过程中,我遇到了向mysql表添加数据的问题。在我使用插入。。。。Value()要添加数据,当我使用get方法(SpringBoot)在网站上查找(显示)数据时,表仍然显示为null(无数据)。你们能就我的错误给我一些建议吗。 额外信息:我把mysql表放在SpringBoot的资源文件夹中。当我使用get方法(Springboot的

  • 问题内容: 我想像这样向数据框添加列“ D”: 根据以下字典: 因此结果数据框显示为: 到目前为止,我尝试了该方法,但无法弄清楚它如何与Dictionary一起工作。 问题答案: 调用并传递字典,这将执行查找并返回该键的关联值:

  • 从这个问题和其他问题来看,似乎不建议使用或来构建熊猫数据帧,因为每次都会重新复制整个数据帧。 我的项目涉及每30秒检索少量数据。这可能会运行3天的周末,因此有人很容易期望一次创建一行超过8000行。向该数据帧添加行的最有效方法是什么?

  • 问题内容: 从这个问题和其他问题来看,似乎不建议使用或构建熊猫数据框,因为它每次都在重新复制整个数据框。 我的项目涉及每30秒检索少量数据。这可能需要进行为期3天的周末,所以有人可以轻松地期望一次创建超过8000行。将行添加到此数据框的最有效方法是什么? 问题答案: 由于它完全被误认为是在此处编辑所选答案。以下内容说明了为什么不 应该 使用放大设置。 “放大设置”实际上比追加效果差。 该 TL;博