Python Pandas select numpy 数组中第一列的行

Python Pandas select rows in numpy array on first columns

我有一个这样的数据框:

df = pd.DataFrame({'A':[1,2,3], 'B':[4,5,6],'C':[7,8,9],'D':[10,11,12]})

还有一个列表,这里是 arr,长度可能会像这样变化:

arr = np.array([[1,4],[2,6]])
arr = np.array([[2,5,8], [1,5,8]])

我想获取 df 中与 arr 中第一个元素匹配的所有行,如下所示:

for x in arr:
   df[df.iloc[:, :len(x)].eq(x).all(1)]

谢谢大家!

IIUC,可以将数组转换为df并使用merge

arr = np.array([[1,4],[2,6],[2,5]])
df.merge(pd.DataFrame(arr, columns = df.iloc[:,:arr.shape[1]].columns))

    A   B   C   D
0   1   4   7   10
1   2   5   8   11

此解决方案将处理不同形状的数组(只要 arr 的 shape[1] <= df 的 shape[1])

arr = np.array([[2,5,8], [1,5,8], [3,6,9]])
df.merge(pd.DataFrame(arr, columns = df.iloc[:,:arr.shape[1]].columns))

    A   B   C   D
0   2   5   8   11
1   3   6   9   12