python如何选择每个用户的最新样本作为测试数据?

我的数据如下。我想按时间戳排序,并将每个用户标识的最新样本用作测试数据。我应该如何训练和测试分裂?我尝试过的是使用pandas对时间戳进行sort_values时间戳,然后使用groupby'userid'。但是我只得到一个groupby对象。正确的方法是什么? pyspark是更好的工具吗?

python如何选择每个用户的最新样本作为测试数据?

获得测试数据的数据框后,应如何拆分数据?显然,我不能使用sklearn的train_test_split。

lqn1987521 回答:python如何选择每个用户的最新样本作为测试数据?

您可以执行以下操作:

# Sort the data by time stamp
df = df.sort_values('timestamp')

# Group by userid and get the last entry from each group
test_df = df.groupby(by='userid',as_index=False).nth(-1)

# The rest of the values
train_df = df.drop(test_df.index)
,

您可以执行以下操作:

import pyspark.sql.functions as F

max_df = df.groupby("userid").agg(F.max("timestamp"))
# join it back to the original DF 
df = df.join(max_df,on="userid")
train_df = df.filter(df["timestamp"] != df["max(timestamp)"])
test_df = df.filter(df["timestamp"] == df["max(timestamp)"])
本文链接:https://www.f2er.com/3112934.html

大家都在问