【发布时间】:2017-02-25 22:52:11
【问题描述】:
数据框由集合 x 组成,集合 x 是一个通用集合,子集列包含一些子集。我想选择比率最高的子集,直到我覆盖了整个集合 x。
未发现 = setx - 子集
这就是我的数据框在 pandas 中的样子:
ratio set x subset uncovered
2 2.00 [1, 3, 6, 8, 9, 0, 7] [8, 3, 6, 1] [0, 9, 7]
0 1.50 [1, 3, 6, 8, 9, 0, 7] [1, 3, 6] [0, 8, 9, 7]
1 1.00 [1, 3, 6, 8, 9, 0, 7] [9, 0] [8, 1, 3, 6, 7]
3 0.75 [1, 3, 6, 8, 9, 0, 7] [1, 3, 7] [0, 8, 6, 9]
我想创建另一列,减去集合 x 并累积未覆盖列,直到我得到一个空列表。
我试过下面的代码
p['tt']=list(p['set x']-p['subset'])
错误信息:
----------------------------------- ---------------------------- TypeError Traceback(最近一次调用 最后的) /Applications/anaconda/lib/python3.5/site-packages/pandas/core/ops.py 在 na_op(x, y) 第581章 --> 582 raise_on_error=True, **eval_kwargs) 583 除了类型错误:
/Applications/anaconda/lib/python3.5/site-packages/pandas/computation/expressions.py 在评估(op,op_str,a,b,raise_on_error,use_numexpr, **eval_kwargs) 208 返回_evaluate(op,op_str,a,b,raise_on_error=raise_on_error --> 209 **eval_kwargs) 210 返回_evaluate_standard(op, op_str, a, b, raise_on_error=raise_on_error)
/Applications/anaconda/lib/python3.5/site-packages/pandas/computation/expressions.py 在 _evaluate_numexpr(op, op_str, a, b, raise_on_error, truediv, 反转,**eval_kwargs) 119 如果结果为无: --> 120 结果 = _evaluate_standard(op, op_str, a, b, raise_on_error) 121
/Applications/anaconda/lib/python3.5/site-packages/pandas/computation/expressions.py 在 _evaluate_standard(op, op_str, a, b, raise_on_error, **eval_kwargs) 61 _store_test_result(假) ---> 62 返回操作(a,b) 63
TypeError: 不支持的操作数类型 -: 'list' 和 'list'
在处理上述异常的过程中,又发生了一个异常:
TypeError Traceback(最近调用 最后)在() ----> 1 p['tt']=list(p['set x']-p['subset'])
/Applications/anaconda/lib/python3.5/site-packages/pandas/core/ops.py 在包装器中(左,右,名称,na_op) 第639章 640 --> 641 arr = na_op(左值,右值) 642 643 return left._constructor(wrap_results(arr), index=index,
/Applications/anaconda/lib/python3.5/site-packages/pandas/core/ops.py 在 na_op(x, y) 586 结果 = np.empty(x.size,dtype=dtype) 第587章 --> 588 结果[掩码] = op(x[掩码], _values_from_object(y[掩码])) 第589章 590 结果 = np.empty(len(x), dtype=x.dtype)
TypeError: 不支持的操作数类型 -: 'list' 和 'list'
【问题讨论】:
-
您的代码不起作用吗?你在 pandas 中试过吗?
-
它不工作。是的,我在 pandas 中尝试过
-
以上是你的pandas代码吗?什么不工作?
-
请看我编辑的帖子
-
你本质上是在做列表操作,而不是集合操作。
-没有为列表定义。我不知道熊猫是否存储集合,但您始终可以将列表转换为集合。这可能有效p['tt']=list(set(p['set x'])-set(p['subset']))