首页 > 解决方案 > 从 Pandas Dataframe 和 Numpy 数组中提取基于条件的子集

问题描述

我有一个 Pandas 数据框df和一个相同大小的 numpy 数组ar。我可以像这样提取行df

subdf = df[df['column'] == value]

但是如何从中提取相应的行ar,即具有相同索引的行?

在我的情况下,df它也是更大数据框的一个子集,这意味着它df.index不是一组连续的整数。

标签: pythonpandasnumpy

解决方案


您可以使用:

df = pd.DataFrame({'value': [1,2,3,2,1]})
ar = np.array([10,20,30,20,10])
ar[df['value'] == 2]

输出:

array([20, 20])

或者,如果您有更高的尺寸:

ar = np.arange(20).reshape(4,5)
ar[:, df['value'] == 2]

输入:

array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])

输出:

array([[ 1,  3],
       [ 6,  8],
       [11, 13],
       [16, 18]])

推荐阅读