0
如何將下面的數據框更改爲像df2這樣的表單?如何有條件地使用Python進行迭代
我有在python一堆爲networkx分析原始數據的
的數據幀現在處理成像DF: 每個ID是一個用戶ID ABCDE是表示該產品是否是在購買了二進制數據日期(1:購買)
df
date id A B C D E
20170601 1001 1 1 0 0 0
1002 0 1 0 0 1
1003 0 1 1 1 1
1004 0 1 0 0 1
20170602 1001 1 0 1 0 1
1002 1 0 1 0 1
1003 0 1 0 0 1
1004 0 1 0 0 1
我想數據處理成以下形式
df2
target1 target2 Weight
A B 1 (the time where A & B both = 1)
A C 2 (the time where A & C both = 1)
A D 0
A E 2
B C 1
B D 1
B E 5
C D 1
C E 3
D E 1
我可以自己計算創建該數據幀,但我有很多的產品超過50個,這將手工花費大量的時間來算它僅使用:
df[(df.A == 1) & (df.B == 1)].sum()
和itertolls可能有助於
list_product = list(itertools.combinations(df.columns,2))
dataframe = []
for i, i+1 in range(list_product):
count = df[(df[i] == 1) & (df[i+1] == 1)].sum()
dataframe.append(df.columns[i], df.columns[i+1], count)
這些無論如何以更快的方式創建此表? (可能有一些迭代的方法...)
您的幫助將非常感激。