我有一个 Dataframe ,大约有800,000行和16列,下面是一个数据示例,
import pandas as pd
import datetime
start = datetime.datetime.now()
print('Starting time,'+str(start))
dict1 = {'id':['person1','person2','person3','person4','person5'], \
'food1':['A','A','A','C','D' ], \
'food2':['B','C','B','A','B'], \
'food3':['','D','C','',''], 'food4':['','','D','','',] }
demo = pd.DataFrame(dict1)
demo
>>>Out[13]
Starting time,2022-11-30 12:08:41.414807
id food1 food2 food3 food4
0 person1 A B
1 person2 A C D
2 person3 A B C D
3 person4 C A
4 person5 D B
我理想结果格式如下:
>>>Out[14]
A B C D
A 0 2 3 2
B 2 0 1 2
C 3 1 0 2
D 2 2 2 0
我执行了以下操作:
我在stackoverflow和google上搜索了一下,但到目前为止还没有找到一个能解决我问题的答案。
我自己也尝试过编码,我的想法是先建立每一对,然后把所有的组合成一个字符串,最后找到重复的数量,但受限于我的编码能力,这是一项正在进行中的工作。而且,一对中的下一个和另一对中的上一个的“新”组合可能会在寻找重复的过程中导致错误。
谢谢你的帮助。
2条答案
按热度按时间nbysray51#
您可以尝试以下操作:
oipij1gg2#
如果我正确理解了您的目标,您可以使用以下命令: