请将鲍勃的字节数组与其他所有人的字节数组进行比较。对每个人都这样做。
columns = ["pasta", "potatoes", "rice"]
data = [[1, 0, 1], [0, 1, 1], [1, 1, 1]]
index = ["tom", "jenny", "bob"]
df = pd.DataFrame(data=data, columns=columns, index=index)
# output
# pasta potatoes rice
# tom 1 0 1
# jenny 0 1 1
# bob 1 1 1
数据说明:1 =喜欢列名的食物// 0不喜欢列名的食物。
我想把每个人的字节数组和其他所有人的字节数组进行比较。如果不同,则为1;0,如果没有区别。
所以希望输出看起来像
pasta potatoes rice
tom jenny 1 1 0
tom bob 0 1 0
jenny tom 1 1 0
jenny bob 1 0 0
bob tom 0 1 0
bob jenny 1 0 0
我知道bob-jenny的byte-array和jenny-bob的byte-array是一样的,但是我需要这样的byte-array。我不在乎它是一个多索引的dataframe还是两个不同的列。谢谢!
4条答案
按热度按时间jrcvhitl1#
您可以使用
itertools.permutations
生成排列,然后切片和比较:输出:
您可以轻松地使用
combinations
来代替permutations
(总信息相同):输出:
eblbsuwk2#
首先使用
MultiIndex.from_product
:或者使用
itertools.permutations
和MultiIndex.from_tuples
的解决方案:然后使用
Series.reindex
和compare byDataFrame.ne
,并将boolean转换为整数,以进行True/False
到1/0
的Map:ni65a41a3#
您可以
cross
join和groupby()输出:
cunj1qz14#
另一种可能的解决方案:
输出: