以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
你的思路基本上是正确的,但是有一点需要注意,你在对 event_date
进行分组聚合的时候,应该使用 min
函数来获取每个玩家的最早游戏日期,而不是对整个 event_date
列进行分组聚合。然后你需要找到与最早游戏日期对应的设备ID。以下是修正后的代码:
import pandas as pd
def game_analysis(activity: pd.DataFrame) -> pd.DataFrame:
# 找到每个玩家的最早游戏日期
min_dates = activity.groupby('player_id')['event_date'].min().reset_index()
min_dates.columns = ['player_id', 'min_event_date'] # 重命名列名以便后续操作
# 找到与最早游戏日期对应的设备ID
result = pd.merge(min_dates, activity, on=['player_id', 'event_date'], how='left')
result = result[['player_id', 'device_id']] # 选择需要的列
return result.drop_duplicates() # 去除重复的行
这样你就能得到每个玩家首次登录的设备名称了。这里使用了 pd.merge
函数来合并数据,然后通过选择需要的列来得到最终结果。注意使用 drop_duplicates
来去除可能的重复行,确保每个玩家只出现一次。