【问题标题】:How to Slice Pandas dataframe based on corresponding ndarray如何根据相应的 ndarray 对 Pandas 数据帧进行切片
【发布时间】:2016-01-28 15:38:13
【问题描述】:

我有一个带有 x 行的 Pandas 数据框 df1。我还有一个带有 x 行的 numpy.ndarray n1n1 只有一列,值为 0 或 1。我只想选择数据框 df1 的第一列,其中对应的 ndarray 列的值为 1。如何做到这一点?

用例如下:- 我有一个发票数据框,其第一列是客户代码。我还有一个 ndarray,它是 scikit 流失预测的输出,基于此发票数据框作为输入。 ndarray 有 1 表示有流失症状的发票,0 表示没有流失的发票。所以我想提取流失的客户。当然输出会有相同客户的重复值,但可以过滤。

【问题讨论】:

  • 您能否提供一些示例数据来说明您想要什么?具体来说,我对“我只想选择数据框 df1 的第一列,其中相应的 ndarray 列的值为 1”感到困惑。你不是说所有 ndarray 列的值为 1 的列,比如布尔过滤器吗?
  • 我已经添加了有问题的用例。我正在使用 Scikit 学习,其输出是一维的 ndarray。我希望数据框中的客户代码与值 1 的数组匹配。

标签: python-2.7 numpy pandas scikit-learn


【解决方案1】:

您可以将指标转换为布尔值,然后使用布尔过滤。

df1 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
n1 = np.array([0, 1, 1])

>>> df1
   a  b
0  1  4
1  2  5
2  3  6


>>> df1[n1.astype('bool')]
   a  b
1  2  5
2  3  6

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多