Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按索引调用数据帧时超出预期的行数_Python_Pandas_Dataframe_Scikit Learn - Fatal编程技术网

Python 按索引调用数据帧时超出预期的行数

Python 按索引调用数据帧时超出预期的行数,python,pandas,dataframe,scikit-learn,Python,Pandas,Dataframe,Scikit Learn,我有两个不同的文件。z_df和s_df。它们的第一列是相同的(它是时间点)。每行都是唯一的时间实例 现在我想分别在z_-df和s_-df上构建一个分类器。那很好。但问题是我想对他们的训练和测试集使用相同的索引。例如,如果选择前四行z_df进行训练,则必须同时选择前四行s_df z_df.shape, s_df.shape: ((450865, 5), (450865, 930)) train_df, test_df = train_test_split(z_df, test

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

现在我想分别在z_-df和s_-df上构建一个分类器。那很好。但问题是我想对他们的训练和测试集使用相同的索引。例如,如果选择前四行z_df进行训练,则必须同时选择前四行s_df

    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_列的行数与s_df列的行数不同。为什么?我用第一栏来称呼他们。为什么会这样?我做错了什么?

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

train_df[0]
s_df[s_df[0].isin(m)]
都没有按索引调用数据帧。@quanghaang你说得对。这将通过其第一列调用数据帧。但这也应该奏效。它们的第一列是相同的。您确定s_df[0]中的值是唯一的吗?什么是
len(s_df[0].unique()
?@QuangHoang你知道了!谢谢你的帮助。请回答页面中的问题,以便我确认此解决方案。谢谢你的帮助。我应该早点问:)。我花了两个小时也没用。