在PandasDataFrame中获取特定列y的最佳方法

iyr7buue  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(102)

我想从Pandas数据框中提取一个特定的列作为y。
到目前为止,我找到了两种方法:

# The First way
y_df = df[specific_column]
y_array = np.array(y_df)
X_df = df.drop(columns=[specific_column])
X_array = np.array(X_df)

# The second way
features = ['some columns in my dataset']
y_df = np.array(df.loc[:, [specific_column]].values)
X_df = df.loc[:, features].values

但是当我比较每个y数组中的值时,我发现它们并不相等:

y[:4]==y_array[:4]

array([[ True,  True, False, False],
       [ True,  True, False, False],
       [False, False,  True,  True],
       [False, False,  True,  True]])

但我确信这两个数组包含相同的元素:

y[:4], y_array[:4]

(array([[0],
        [0],
        [1],
        [1]], dtype=int64),
 array([0, 0, 1, 1], dtype=int64))

那么,为什么在将它们进行比较时会看到False值呢?

vjhs03f7

vjhs03f71#

如果使用双[[]],则获取一个元素DataFrame,如果转换为数组,则获取2d数组:

y_df = np.array(df.loc[:, [specific_column]].values)

解决方案是删除Series[],如果转换为阵列,则获得1d阵列:

y_df = df[specific_column].to_numpy()
#your solution
y_df = np.array(df.loc[:, specific_column].values)

相关问题