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

时间:2015-10-28 17:56:01

标签: python-2.7 numpy pandas scikit-learn

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

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

1 个答案:

答案 0 :(得分: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