Python Pandas选择numpy数组中第一列的行



我有一个这样的数据框架:

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)]

谢谢你们了!

iuc,您可以将数组转换为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

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

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

最新更新