0
我試圖從python
中的dataframe
構建表格,該表格顯示兩個特定類別之間的單詞的共同頻率總數。 爲了做到這一點,我創建了第一個default dict
,其中包含每個類別key
以及與value
相關的單詞列表。多個詞典的不同組合中的值的交集(默認詞典)
現在,我需要兩個categories
構建演示爲最終所需的結果表的共性,如表中的每一個組合:
A B C
A 10 2 1
B 2 5 2
C 1 2 3
,我一起工作的樣本數據是:
Cat Item
A dog
A cat
A bear
A fish
A monkey
A tiger
A lion
A rabbit
A horse
A turtle
B dog
B cat
B flower
B plant
B bush
C dog
C flower
C plant
,我使用的工作代碼爲:
import pandas as pd
import numpy as np
from collections import defaultdict
inFile = '\path\to\infile.csv'
data = pd.read_csv(inFile, sep='\t')
dicts = defaultdict(list)
for i, j in zip(data['Cat'],data['Item']):
dicts[i].append(j)
for k,v in dicts.iteritems():
set1 = set(v)
set2 = set(v)
for k in set1.intersection(set2):
print k,v
運行在上述過程之後:結果default dict
(前intersection
)爲以下
{'A':['dog','cat','bear','fish','monkey','tiger','lion','rabbit','horse','turtle'],'B':['dog','cat','flower','plant','bush'],'C':['dog','flower','plant']}
試圖研究這個問題,我橫跨following solution傳來:, 這是在正確方向上的步驟,因爲它是計數並按照多重詞典中的鍵對值進行分組,但是它沒有考慮字典的每個鍵 之間的值的並集。
我也研究過一些尋找匹配鍵或值的解決方案,但其中的大多數(如HERE)僅處理兩個詞典的實例而不處理多個詞典。因此,我仍然停留在如何計算和總結多個字符中每個鍵組合之間的共同元素的總數。
謝謝您的解決方案。它在更仔細的檢查後仍然有效,我注意到一個錯誤,我不明白爲什麼它發生在你的代碼中。當使用22個鍵值的較大數據集上使用代碼時,字典'res'返回{('A','B'):x}!= {('B','A'):x }任何想法爲什麼? – owwoow14
你能分享數據集和結果嗎?這樣我可以重新創建錯誤。 –
這是正確的。這是我的'dataframe'的後來處理是正確的。接受答案。 – owwoow14