簡體   English   中英

Python:如何從熊貓數據框創建協作網絡?

[英]Python: how to create network of collaboration from pandas data frame?

我有一個像下面的DataFrame

df = pd.DataFrame( {'Item':['A','A','A','B','B','C','C','C','C'], 
    'Name': ['Tom','John','Paul','Tom','Frank','Tom', 'John', 'Richard', 'James'],
    'Total':[3,3,3,2,2,4,4,4,4]})

print df

Item Name  Total
A    Tom     3
A    John    3
A    Paul    3
B    Tom     2 
B    Frank   2
C    Tom     4
C    John    4 
C    Richard 4 
C    James   4

我想創建一個協作網絡,該網絡通過兩對之間的Total協作以及同一ItemName的數量進行標准化。 最后我想要的是

df1 

Name     Name1     Item       Total 
 Tom     John        A          3
 Tom     John        C          4
 Tom     Paul        A          3
 Tom     Frank       B          2
 Tom     Richard     C          4 
 Tom     James       C          4
 John    Paul        A          3
 John    Richard     C          4
 Richard James       C          4

我認為這可以滿足您的需求。 我使用groupby來對連接兩個Names和itertools.combinationsItem進行分組。

cnxns = []
for k,g in df.groupby('Item'):
    [cnxns.extend((n1,n2,k,len(g)) for n1,n2 in combinations(g['Name'], 2))]

pd.DataFrame(cnxns, columns=['Name', 'Name1', 'Item', 'Total'])

    Name    Name1   Item    Total
0   Tom     John        A   3
1   Tom     Paul        A   3
2   John    Paul        A   3
3   Tom     Frank       B   2
4   Tom     John        C   4
5   Tom     Richard     C   4
6   Tom     James       C   4
7   John    Richard     C   4
8   John    James       C   4
9   Richard     James   C   4

可能是一種更好的方法,但這應該可以滿足您的要求。

我的輸出和所需輸出之間的唯一區別是我包含了(John, James, C, 4) ,但是也許您想要(假設我正確地理解了這個問題)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM