如何根据相应的 ndarray 切片 Pandas 数据帧

How to Slice Pandas dataframe based on corresponding ndarray

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

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

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

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