猿问

python中的条件替换和嵌套for循环

我对 python 还是个新手,并不完全确定解决这个问题的方法。我有一个关于视频游戏的数据框,其中包含重要的标题、平台、全球销售和发布日期。有一些条目缺少发布日期。如果条目的全球销售价值也非 0,我想用平台的平均发布日期替换缺失值。我不完全确定如何构建它以便它提取适当的平均值,无论我是否需要嵌套循环等。请告诉我我是否在正确的轨道上或者我可以做些什么来合并这个如果您需要任何说明,谢谢!


    games.head()

                        Name         Platform  Global_Sales Release_Date

    0  Grand Theft Auto: San Andreas      PS2         20.81   2004-10-26

    1             Grand Theft Auto V      PS3         20.30   2013-09-17

    2             Grand Theft Auto V      PS4         18.46   2014-11-18

    3    Grand Theft Auto: Vice City      PS2         16.15   2002-10-28

    4             Grand Theft Auto V     X360         15.85   2013-09-17


    games.info()

    <class 'pandas.core.frame.DataFrame'>

    Int64Index: 28852 entries, 0 to 28851

    Data columns (total 4 columns):

    Name            28852 non-null object

    Platform        28852 non-null category

    Global_Sales    16025 non-null float64

    Release_Date    27757 non-null datetime64[ns]


    for date in games.Release_Date:

      if pd.isnull(date) and games.Global_Sales !=0:

        games.Release_Date = [mean Release_Year for appropriate Platform]

我有另一个 df 的平均值:platform_means,取自拆分我的日期时间对象并找到我想要使用的平均年份值。


    platform_means.head()

      Platform      Release_Year  

    0      3DS       2012.282895       

    1       DC       2000.077778       

    2       DS       2007.654777       

    3       GB       1999.375000       

    4      GBA       2003.180401       

所以这将是我想要的一个例子,希望它有所帮助。我可以使用 Release_Date 作为日期时间或 Release_Date,这是一个 int,具体取决于哪个更容易。我以前从未有过约会时间。


从这样的事情:


    games.head()

                                Name         Platform  Global_Sales Release_Date

            0             A                       PS2         20.81   2004-10-26

            1             B                       GBA         20.30   nan

            2             C                       PS4         00.00   nan

            3             D                       PS2           nan   nan

            4             E                      X360         15.85   2013-09-17



猛跑小猪
浏览 230回答 2
2回答

料青山看我应如是

以下可能是您正在寻找的内容:for&nbsp;index,&nbsp;row&nbsp;in&nbsp;games[games['Release_Date'].isnull()].iterrows(): &nbsp;&nbsp;&nbsp;&nbsp;games.loc[games.index&nbsp;==&nbsp;index,&nbsp;'Release_Date']&nbsp;=&nbsp;platform_means.loc[platform_means.Platform&nbsp;==&nbsp;row['Platform'],'Release_Year'].item()

慕码人2483693

我会尝试使用该pd.where方法。请参阅文档。games['Release_Date'].where(games['Release_Date'].isnull(),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;games.join(platform_means,&nbsp;on='Platform')['Release_Year'])
随时随地看视频慕课网APP

相关分类

Python
我要回答