从这种形式的 0/1 pandas/numpy 数据框出发的最有效方法是什么::
>>> dd
{'a': {0: 1, 1: 0, 2: 1, 3: 0, 4: 1, 5: 1},
'b': {0: 1, 1: 1, 2: 0, 3: 0, 4: 1, 5: 1},
'c': {0: 0, 1: 1, 2: 1, 3: 0, 4: 1, 5: 1},
'd': {0: 0, 1: 1, 2: 1, 3: 1, 4: 0, 5: 1},
'e': {0: 0, 1: 0, 2: 1, 3: 0, 4: 0, 5: 0}}
>>> df = pd.DataFrame(dd)
>>> df
a b c d e
0 1 1 0 0 0
1 0 1 1 1 0
2 1 0 1 1 1
3 0 0 0 1 0
4 1 1 1 0 0
5 1 1 1 1 0
>>>
到列表的项集列表 ?::
itemset = [['a', 'b'],
['b', 'c', 'd'],
['a', 'c', 'd', 'e'],
['d'],
['a', 'b', 'c'],
['a', 'b', 'c', 'd']]
df.shape ~ (1e6, 500)
最佳答案
您可以先将列名乘以 mul
并通过 values
将 DataFrame
转换为 numpy array
:
print (df.mul(df.columns.to_series()).values)
[['a' 'b' '' '' '']
['' 'b' 'c' 'd' '']
['a' '' 'c' 'd' 'e']
['' '' '' 'd' '']
['a' 'b' 'c' '' '']
['a' 'b' 'c' 'd' '']]
通过嵌套列表理解删除空字符串:
print ([[y for y in x if y != ''] for x in df.mul(df.columns.to_series()).values])
[['a', 'b'],
['b', 'c', 'd'],
['a', 'c', 'd', 'e'],
['d'],
['a', 'b', 'c'],
['a', 'b', 'c', 'd']]
关于python pandas 从 0/1 数据帧到项目集列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605111/