python pandas 从 0/1 数据帧到项目集列表

标签 python numpy pandas

从这种形式的 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并通过 valuesDataFrame 转换为 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/

相关文章:

循环中字符串的 Python 行为

python - InvalidRequestError : Ambiguous column name '***' in result set, 当请求对 mysqldb 有效时?

python - 将 16 位 numpy 数组保存为 16 位 PNG 图像

python - 求和运算的本地并行计算

python - pandas 中的半小时四舍五入

python - 如何匹配以不同角度拍摄的图像

python - 准确度测量值 val_acc 可信吗?

python - 如何使用 Seaborn 绘制字符串类型 Numpy 数组?

python - 将 CSV 缩减采样 10 倍并将其保存到另一个文件中

python - 在 Pandas 的同一系列中获取不同的数据类型