为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2022-06-14 09:44:43
我有两个不同的文件。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 的行数不同。为什么??我用第一列来称呼他们。为什么会这样?我究竟做错了什么?
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

这很可能是因为您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]


查看完整回答
反对 回复 2022-06-14
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信