【问题标题】:Best way to get a specific column as y in pandas DataFrame在 pandas DataFrame 中获取特定列作为 y 的最佳方法
【发布时间】:2022-12-14 13:36:37
【问题描述】:

我想从 pandas DataFrame 中提取一个特定的列作为 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 值?

【问题讨论】:

  • 因为维度不一样,你有广播,用y[:4].ravel() == y_array[:4],或者y[:4,0] == y_array[:4]

标签: python pandas feature-extraction


【解决方案1】:

如果使用 double [[]] 获取一个元素 DataFrame 如果转换为数组获取二维数组:

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

解决方案是删除 []Series,如果转换为数组,则获取一维数组:

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

【讨论】:

  • 你能解释一下为什么如果我删除那个括号,我会得到一个正确的答案吗?
猜你喜欢
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2018-10-02
  • 2020-04-26
  • 1970-01-01
  • 2022-01-03
  • 2020-11-25
相关资源
最近更新 更多