如何根据相应的 ndarray 切片 Pandas 数据帧
How to Slice Pandas dataframe based on corresponding ndarray
我有一个包含 x 行的 Pandas 数据框 df1
。我还有一个包含 x 行的 numpy.ndarray n1
。 n1
只有一列,值为 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
我有一个包含 x 行的 Pandas 数据框 df1
。我还有一个包含 x 行的 numpy.ndarray n1
。 n1
只有一列,值为 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