猿问

按索引调用 DataFrame 时的行数超出预期

我有两个不同的文件。z_df 和 s_df。他们的第一列是相同的(它是时间点)。每一行都是一个唯一的时间实例。


现在我想分别在 z_df 和 s_df 上构建一个分类器。那也行。但问题是我想为他们的训练和测试集使用相同的索引。例如,如果选择 z_df 的前 4 行进行训练,那么也必须选择 s_df 的前 4 行。


    z_df.shape, s_df.shape:

   ((450865, 5), (450865, 930))


   train_df, test_df = train_test_split(z_df, test_size=TEST_SIZE, shuffle=True )




    train_df.shape:

    (315605, 5)



    m=train_df[0].tolist()

    len(m), train_df.shape:

    (315605, (315605, 5))


    s_train=s_df[s_df[0].isin(m)]

    s_train.shape, train_df.shape:

    ((362774, 930), (315605, 5))

如您所见,s_train 的行数与 train_df 的行数不同。为什么??我用第一列来称呼他们。为什么会这样?我究竟做错了什么?


红颜莎娜
浏览 115回答 1
1回答

明月笑刀无情

这很可能是因为您s_df[0]包含重复项。这可以通过 来确认len(s_df[0]) == len(s_df[0].unique())。要对两个数据集进行采样:is_train = np.random.choice((True, False), size=len(s_df), p=(0.7, 0.3))s_train, z_train = s_df[is_train], z_df[is_train]s_test, z_test = s_df[~is_train], z_df[~is_train]
随时随地看视频慕课网APP

相关分类

Python
我要回答