为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2021-08-17 15:59:55
我对 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
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

以下可能是您正在寻找的内容:

for index, row in games[games['Release_Date'].isnull()].iterrows():
    games.loc[games.index == index, 'Release_Date'] = platform_means.loc[platform_means.Platform == row['Platform'],'Release_Year'].item()


查看完整回答
反对 回复 2021-08-17
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我会尝试使用该pd.where方法。请参阅文档

games['Release_Date'].where(games['Release_Date'].isnull(), 
                            games.join(platform_means, on='Platform')['Release_Year'])


查看完整回答
反对 回复 2021-08-17
  • 2 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信