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

Pandas python如何选择每个用户的最新样本作为测试数据?,pandas,dataframe,machine-learning,pyspark,Pandas,Dataframe,Machine Learning,Pyspark,我的数据如下。我想按时间戳排序,并使用每个用户ID的最新样本作为测试数据。我应该如何进行列车和测试分离?我尝试使用pandas对时间戳上的值进行排序,然后按“userid”分组。但我只得到一个groupby对象。正确的方法是什么?pyspark是更好的工具吗 在我得到测试数据的dataframe之后,应该如何分割数据?显然,我不能使用sklearn的train_test_split。您可以执行以下操作: # Sort the data by time stamp df = df.sort_va

我的数据如下。我想按时间戳排序,并使用每个用户ID的最新样本作为测试数据。我应该如何进行列车和测试分离?我尝试使用pandas对时间戳上的值进行排序,然后按“userid”分组。但我只得到一个groupby对象。正确的方法是什么?pyspark是更好的工具吗


在我得到测试数据的dataframe之后,应该如何分割数据?显然,我不能使用sklearn的train_test_split。

您可以执行以下操作:

# 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)"])

您可以执行以下操作:

# 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)"])

您必须按用户id分组,并从每个组中获取最大时间戳。你应该能在这里得到答案:什么?真的吗<代码>第n个?我能有进一步的问题吗?在我得到测试数据之后,我应该如何将它们从原始数据帧中分割出来?df这是我想要的测试数据,但我应该从原始数据帧中删除它们,以便获得trining数据吗?谢谢