我有两个数组,想比较行。特别地,我想检查arr2中的每个元素是否在arr1中的相应行中。
给出的示例
arr1 = [[1, 7, 6, 2, 8],
[1, 5, 4, 8],
[8, 2, 5]]
arr2 = [[8, 1, 5, 0, 7, 2, 9, 4],
[0, 1, 8, 5, 3, 4, 7, 9],
[9, 2, 0, 6, 8, 5, 3, 7]]
arr2第一行的预期结果
[1, 1, 0, 0, 1, 1, 0, 0]
用for循环求解
d1 = pd.DataFrame(arr1)
d2 = pd.DataFrame(arr2)
for y in range(len(arr1)):
print(d2.iloc[y].isin(d1.iloc[y]).astype(int).tolist())
如何在pandas中做到这一点而不迭代行?
3条答案
按热度按时间czq61nw11#
你可以用一个for循环通过列表解析来完成。
Pandas解决方案:
对于所有行:
rseugnpd2#
如果你***不想使用for循环并迭代行***,那么你可以这样做:
对于所有行,使用
map
而不是列表解析:irlmq6kh3#
下面是一个不迭代行的解决方案。
df.isin()
可以接受一个字典,其中的键必须是列名。编辑:我刚刚注意到下面的解决方案与Timus的评论几乎相同
另外,这里有一个列表理解的方法:
输出: