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)
这些无论如何以更快的方式创建此表? (可能有一些迭代的方法...)
您的帮助将非常感激。