我对 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()
慕码人2483693
TA贡献1860条经验 获得超9个赞
我会尝试使用该pd.where
方法。请参阅文档。
games['Release_Date'].where(games['Release_Date'].isnull(), games.join(platform_means, on='Platform')['Release_Year'])
添加回答
举报
0/150
提交
取消