Python 将数据帧与另一个数据帧排序

Python 将数据帧与另一个数据帧排序,python,pandas,Python,Pandas,我有一个数据帧,我目前正在第一次分裂成一个培训和测试集 import pandas as pd X = df.drop(['label'], axis=1) y = df['label'] from sklearn.model_selection import train_test_split X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.25) 使用scikitlearn中的常用代码。这种随机洗牌是

我有一个数据帧,我目前正在第一次分裂成一个培训和测试集

import pandas as pd

X = df.drop(['label'], axis=1)
y = df['label']

from sklearn.model_selection import train_test_split
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.25)
使用
scikitlearn
中的常用代码。这种随机洗牌是必要的。接下来,我想按照某个变量对
X_train
X_val
进行排序(比如
revenue

X\u train.sort\u values('revenue')
的问题是,在我这样做之后,我无法对
y\u train
进行排序,以便标签与
X\u train
行正确匹配


有什么解决方法吗?

一种方法是根据已排序数据帧的索引重新为另一个数据帧编制索引。您可以使用以下示例作为参考:

In [99]: df                                                                                                                                                                       
Out[99]: 
     key  lower  upper
0  panda     10     15
1    dog      7      9
2    cat      8     17

In [100]: X = df.drop(['key'],axis=1)                                                                                                                                             

In [101]: y = df['key']                                                                                                                                                           

In [102]: X.sort_values('lower',inplace=True)                                                                                                                                     

In [103]: test = y.reindex(X.index)                                                                                                                                               

In [104]: X                                                                                                                                                                       
Out[104]: 
   lower  upper
1      7      9
2      8     17
0     10     15

In [105]: test                                                                                                                                                                    
Out[105]: 
1      dog
2      cat
0    panda
Name: key, dtype: object



也许在拆分之前对数据进行排序?这应该可以用y_train.reindex(X_train.index)正如dibery指出的那样,您可以将y列放在最末尾<代码>序列测试分割可用于一个或两个阵列(X、y或仅df[X+y])