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