我有一个这样的数据框架:
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